Мой массив не дает правильных результатов - PullRequest
0 голосов
/ 25 октября 2009

Ну, я мог бы также начать новую тему. Это не работает, как я надеялся. Вот массив, который создается из базы данных. Обратите внимание, как sidebar[0] и sidebar[1] повторяют значение «Favs». Это будет повторять то же значение в моей форме, которое я не хочу. Все дубликаты имен должны быть сгруппированы вместе. Это возможно?


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

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

                    [2] => Array
                        (
                            [header] => Offsite
                            [link] => dfdaf
                        )

                    [3] => Array
                        (
                            [header] => Something
                            [link] => something else
                        )
                )
        )
)

Вот пример того, что мне нужно.

В базе данных, скорее всего, будет несколько строк с одинаковым именем на боковой панели, например "Favs" или чем-то еще. Эти заголовки должны быть сгруппированы в отдельные категории и все ссылки сгруппированы.

Favs  google  http://...
Favs  yahoo   http://...
Favs  SO      http://...
bla   bla     http://...
bla   bla1    http://...

Should give:
Favs
  google
  yahoo
  SO
bla
  bla
  bla1

Ответы [ 2 ]

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

на основе вашей последней структуры массива:

<?php
$_list = array();
foreach($data as $k => $v){ // $data is get from $array['sidebar'];
    $_list[$v['header']][$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>";
}
?>

структура массива для кода выше:

Array
(
    [0] => Array
        (
            [header] => Favs
            [link] => google
            [url] => http://
        )

    [1] => Array
        (
            [header] => Favs
            [link] => yahoo
            [url] => http://
        )

    [2] => Array
        (
            [header] => Favs
            [link] => gmail
            [url] => http://
        )

    [3] => Array
        (
            [header] => Site
            [link] => facebook
            [url] => http://
        )

    [4] => Array
        (
            [header] => Site
            [link] => ymail
            [url] => http://
        )

    [5] => Array
        (
            [header] => Site
            [link] => myspace
            [url] => http://
        )

)
0 голосов
/ 25 октября 2009
$conv = array();
foreach($nav['sidebar'] as $index => $data)
    foreach($data as $name => $entries)
        foreach($entries as $entry)
            $conv[$name][] = $entry;
$nav['sidebar'] = $conv;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...