0

考虑这个嵌套数组:

$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',
    ),
 ),

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

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>

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

4

3 回答 3

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

回报

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
)
于 2013-11-08T02:35:25.823 回答
0

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

只需使用两个 foreach。

于 2013-11-08T02:33:29.293 回答
0

如果您尝试在主数组中定义数组,这就是它的样子

    foreach ($link  as $sub_array) {
        //do something
        foreach ($sub_array as $sub_of_sub) {
            // do something and so on
        }
    }
于 2013-11-08T02:38:16.287 回答