2009-10-02 138 views
0

我會第一個承認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; 
} 

爲什麼我的論點無效?什麼最好的方式來打印我的陣列?

+3

$ page和$ sitemap在哪裏定義?不應該將它們傳遞給你的函數嗎? Wow; – dnagirl 2009-10-02 13:57:02

+0

哇;在發佈此消息後大約45秒回答了我自己的問題。 我沒有將數組$ sitemap傳遞給GenerateMenu。該數組不在函數的範圍內,所以沒有數組$ sitemap來遍歷。 – 2009-10-02 13:57:18

回答

3

您忘記指定/傳遞$page$sitemap。這些變量來自哪裏?

嘗試將它傳遞給你的函數:

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

然後,你可以這樣調用:

$sitemap = array(
    // … 
); 
$page = 'menu01' 
echo GenerateMenu($sitemap, $page); 
0

GenerateMenu()需要發送的值$page$sitemap功能或者它不」不知道該怎麼做。