PHP 嵌套数组 - 输出子数组内容和数组名称


PHP Nested Array - Output sub-array contents and array name

考虑这个嵌套数组:

$link = array(
 'Level 1' => array(
   'Monthly' => array( 
    'note' => 'Note 1 1',
    'link'  => '1.1.com',
    ),
   '6 Month' => array(  
     'note' => 'Note 1 6',
     'link' => '1.6.com',
    ),
 ),
 'Level 2' => array(
   'Monthly' => array( 
    'note' => 'Note 2.1',
    'link'  => '2.1.com',
    ),
   '6 Month' => array(  
     'note' => 'Note 2.6',
     'link' => '2.6.com',
    ),
 ),

我将如何优雅地使用foreach来实现以下目标:

if $var = 'Level 1' output 
  <a href="1.1.com" title="Note 1 1">Monthly</a>
  <a href="1.6.com" title="Note 1 6">6 Month</a>

怀疑我可能需要在循环内做一个循环?我可以遍历数组,但无法弄清楚如何调用子数组的名称......

<?php
$key = 'Level 1';
$link = array(
 'Level 1' => array(
   'Monthly' => array( 
    'note' => 'Note 1 1',
    'link'  => '1.1.com',
    ),
   '6 Month' => array(  
     'note' => 'Note 1 6',
     'link' => '1.6.com',
    ),
 ),
 'Level 2' => array(
   'Monthly' => array( 
    'note' => 'Note 2.1',
    'link'  => '2.1.com',
    ),
   '6 Month' => array(  
     'note' => 'Note 2.6',
     'link' => '2.6.com',
    ),
 ),
);
if(isset($link[$key])) {
    foreach($link[$key] as $array) {
        print_r($array);
    }
}
?>

返回

Array
(
    [note] => Note 1 1
    [link] => 1.1.com
)
Array
(
    [note] => Note 1 6
    [link] => 1.6.com
)

我先检查它是否设置,然后在设置键上运行 foreach 以打印出您需要的内容。

编辑:

if(isset($link[$key])) {
    foreach($link[$key] as $key => $array) {
        print $key;
        print_r($array);
    }
}

哪个返回

Monthly
Array
(
    [note] => Note 1 1
    [link] => 1.1.com
)
6 Month
Array
(
    [note] => Note 1 6
    [link] => 1.6.com
)

我认为在这种情况下使用嵌套循环是优雅的。

只需使用两个。

这就是你尝试在主数组中定义数组的样子

    foreach ($link  as $sub_array) {
        //do something
        foreach ($sub_array as $sub_of_sub) {
            // do something and so on
        }
    }