Как мне перечислить многомерный ассоциативный массив? - PullRequest
0 голосов
/ 02 октября 2009

Я буду первым, кто признает, что PHP не моя сильная сторона, и этот массив начинает сводить меня с ума.

Это массив, который я пытаюсь перечислить:

// array containing the site menu
$sitemap = array(
    array( 'Title' => 'menu01',
        'Description' => 'menu01_description', 
        'Address' => 'http://localhost/site.php?page=menu01',
        ),
    array( 'Title' => 'menu02',
        'Description' => 'menu02_description', 
        'Address' => 'http://localhost/site.php?page=menu02',
        ),
    array( 'Title' => 'menu03',
        'Description' => 'menu03_description', 
        'Address' => 'http://localhost/site.php?page=menu03',
        )
);

Сейчас я работаю в предположении, что мне нужно использовать цикл foreach для перечисления содержимого моего массива.

Это функция, которую я сейчас пытаюсь реализовать, но она продолжает выдавать ошибку о том, что мои аргументы неверны.

function GenerateMenu(){
    $output = "<ul>";

    foreach ($sitemap as $menuitem => $value){
        if ($page == $value["Title"]){
            $output .= '<li class="active">';
        }
        else {
            $output .= '<li>';
        }

        $output .= '<a href="' . $value['Address'] . '">' . $value['Description'] . '</a><li>';
    }

    $output .= "</ul>";
    return $output;
}

Почему мои аргументы неверны? Какой лучший способ напечатать мой массив?

Ответы [ 2 ]

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

Вы забыли указать / передать $page и $sitemap. Откуда эти переменные?

Попробуйте передать его вашей функции:

function GenerateMenu($sitemap, $page) {
    // …
}

Тогда вы можете назвать это так:

$sitemap = array(
    // …
);
$page = 'menu01'
echo GenerateMenu($sitemap, $page);
0 голосов
/ 17 декабря 2009

Для функции GenerateMenu() необходимо отправить значение для $page и $sitemap, или она не знает, что делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...