Как я могу сделать массив, когда есть повторяющиеся значения? - PullRequest
2 голосов
/ 25 октября 2009

У меня есть данные, которые содержат ссылки на панель навигации. Он должен быть структурирован в точности как неупорядоченный список, с заголовком, а затем со всеми соответствующими ссылками под этим заголовком. Я не могу построить это правильно. Это будут некоторые примеры данных из базы данных.

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 ]

3 голосов
/ 25 октября 2009

Вы можете использовать многомерный массив следующим образом:

<?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 голос
/ 25 октября 2009
$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>';
}
0 голосов
/ 25 октября 2009

Вы можете использовать этот код

<?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>";
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...