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

时间:2013-11-08 02:29:03

标签: php arrays nested

考虑这个嵌套数组:

$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>

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

3 个答案:

答案 0 :(得分:1)

<?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);
    }
}
?>

RETURNS

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

我检查是否先设置然后在set键上运行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
)

答案 1 :(得分:0)

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

只需使用两个foreach。

答案 2 :(得分:0)

如果您尝试在主数组中定义数组

,那就是它的样子
    foreach ($link  as $sub_array) {
        //do something
        foreach ($sub_array as $sub_of_sub) {
            // do something and so on
        }
    }