简体   繁体   English

PHP从嵌套数组输出键名

[英]PHP Outputting Key Names From Nested Array

I have an array : 我有一个array

$cats = array(
  'guitars' => array (
    'electric-guitars',
    'acoustic-guitars',
    'bass',
    'electro-acoustic',
    'effects-fx-pedals',
    'guitar-amps',
    'classical-guitars',
    'guitar-recording',
    'folk',
    'cases-stands',
    'guitar-care',
    'guitar-accessories'
  ),
  'drums',
  'keyboards',
  'studio',
  'computer',
  'dj-pa',
  'brass',
  'accessories'
);

And I'm trying to output the top level keys so it outputs the following: 我正在尝试输出顶级密钥,因此它输出以下内容:

guitars
drums
keyboards
studio
computer
dj-pa
brass
accessories

I'm using this foreach loop: 我正在使用此foreach循环:

foreach($cats as $cat => $cat_name) {
  echo '<div>' . $cat_name . '</div>';
}

But this instead outputs: 而是输出:

Array
drums
keyboards
studio
computer
dj-pa
brass
accessories

If anyone can help it'd be greatly appreciated! 如果有人可以提供帮助,将不胜感激!

You're trying to output the value, rather than the key. 您正在尝试输出值,而不是键。 When you use foreach(... as ... => ...) , the syntax is foreach($array as $key => $value) . 当您使用foreach(... as ... => ...) ,语法为foreach($array as $key => $value) Your variable names are backwards. 您的变量名是向后的。 Also, you need to use is_array() to figure out what the output is, because you are inconsistent in your use of key names versus values: 另外,您还需要使用is_array()来确定输出是什么,因为您在键名和值的使用上不一致:

foreach($cats as $cat_name => $cat) {
    if(is_array($cat)) { // guitars
        echo '<div>' . $cat_name . '</div>';
    }
    else { // the other values have numeric keys
        echo '<div>' . $cat . '</div>';
    }
}

Output (tags omitted for readability): 输出(省略标签以提高可读性):

guitars
drums
keyboards
studio
computer
dj-pa
brass
accessories

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM