【问题标题】:PHP Outputting Key Names From Nested ArrayPHP从嵌套数组中输出键名
【发布时间】:2014-03-21 20:30:20
【问题描述】:

我有一个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'
);

我正在尝试输出顶级键,因此它会输出以下内容:

guitars
drums
keyboards
studio
computer
dj-pa
brass
accessories

我正在使用这个foreach 循环:

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

但这反而会输出:

Array
drums
keyboards
studio
computer
dj-pa
brass
accessories

如果有人能提供帮助,将不胜感激!

【问题讨论】:

    标签: php arrays wordpress


    【解决方案1】:

    您正在尝试输出值,而不是键。当您使用foreach(... as ... =&gt; ...) 时,语法为foreach($array as $key =&gt; $value)。您的变量名称是向后的。此外,您需要使用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>';
        }
    }
    

    输出(为便于阅读,省略了标签):

    guitars
    drums
    keyboards
    studio
    computer
    dj-pa
    brass
    accessories
    

    【讨论】:

    • 这将回显guitars 0 1 2 3 4 5 6
    • @JacobRaccuia 谢谢;我错过了上面键名的不一致使用。
    • 啊,对了,我不知道语法的写入顺序,谢谢 :) 但这与 guitars 0 1 2 3 4 5 6 相呼应,有什么想法可以解决这个问题吗?
    • @Ed Cottrell - 我犯了同样的错误,但在发布之前进行了测试:p
    • 已经修复;请看上面。此外,无论谁投反对票:编辑后的代码有效。
    猜你喜欢
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    相关资源
    最近更新 更多