当有重复值时如何创建数组?

时间:2009-10-25 16:04:03

标签: php

我的数据包含导航栏的链接。它的结构应该与无序列表完全相同,带有标题,然后是该标题下面的所有相应链接。我似乎无法正确构建这个。这将是来自数据库的一些样本数据。

HEADING     LIST         LINK
Favs        google          http://...
Favs        yahoo           http://...
Favs        stackoverflow   http://...
Site        first link      http://...
Site        second link     http://...

然后,此数据应所有标题分组为一个,然后显示与其关联的链接。这甚至是可能的,还是有更好的方法?

我计划使用“HEADING”和“LIST”来动态构建<UL>类型的菜单。


嗯,这不像我希望的那样有效。这是从数据库构建的数组。注意侧边栏[0]和侧边栏[1]如何重置“Favs”值。这将在我不希望的表单上重复相同的值。所有重复的名称应该组合在一起。这可能吗?

Array
(
    [date] => Sun, 25 Oct 2009
    [sidebar] => Array
        (
            [0] => Array
                (
                    [Favs] => Array
                        (
                            [author_sidebar_link] => google.com
                        )

                )

            [1] => Array
                (
                    [Favs] => Array
                        (
                            [author_sidebar_link] => yahoo.com
                        )

                )

            [2] => Array
                (
                    [Offsite] => Array
                        (
                            [author_sidebar_link_title] => something
                        )

                )

            [3] => Array
                (
                    [Something] => Array
                        (
                            [author_sidebar_link] => something else
                        )
                )
        )
)

3 个答案:

答案 0 :(得分:3)

您可以使用这样的多维数组:

<?php
$menu = array(
     'Favs' => array(
         array('LIST' => 'google', 'LINK' => 'http://...'),
         array('LIST' => 'yahoo', 'LINK' => 'http://...'),
         array('LIST' => 'stackoverflow', 'LINK' => 'http://...')
     ),
     'Site' => array(
         array('LIST' => 'first link', 'LINK' => 'http://...'),
         array('LIST' => 'second link', 'LINK' => 'http://...')
     )
);
?>

答案 1 :(得分:1)

$menu = array('Favs' => array(
                              'Google' => 'http://',
                              'Yahoo' => 'http://'
                        ),
              'Site' => array(
                              'First' => 'http://',
                              'Second' => 'http://'
                        )
             );
foreach($menu as $category => $items){
    echo '<h3>' . $category . '</h3>';
    echo '<ul>';
    foreach($items as $name => $url){
        echo '<li><a href="' . $url . '">' . $name . '</a></li>';
    }
    echo '</ul>';
}

答案 2 :(得分:0)

您可以使用此代码

<?php
$_list = array();
foreach($_data as $k => $v){
 $_list[$v['HEADING']][$v['LIST']] = $v['LINK'];
}

foreach($_list as $k => $v){
 echo "<ul>".$k;
 foreach($v as $kk => $vv){
  echo "<li><a href='".$vv."'>".$kk."</a></li>";
 }
 echo "</ul>";
}
?>