2011-05-13 72 views
-1

每次嘗試顯示類別時,我都會得到名稱Array而不是名稱category。我想知道如何在下面的代碼中顯示category名稱?PHP數組問題

$list = array(); 
$cat = array(); 
$query = mysqli_query($dbc,"SELECT id, parent_id, category FROM categories ORDER BY parent_id, category LIKE category ASC"); 
while($row = mysqli_fetch_assoc($query)){ 
    $list[$row['id']] = array_merge($row, array('children' => array())); 
} 
mysqli_free_result($query); 

foreach($list as $nodeId => &$node) { 
    if(!$node['parent_id'] || !array_key_exists($node['parent_id'], $list)){ 
     $cat[] = &$node; 
    } else { 
     $list[$node['parent_id']]['children'][] = &$node; 
    } 
} 
unset($node); 
unset($list); 

Var轉儲輸出示例。

array 
    0 => & 
    array 
     'id' => string '1' (length=1) 
     'parent_id' => string '0' (length=1) 
     'category' => string 'Cat-1' (length=5) 
     'children' => 
     array 
      0 => & 
      array 
       ... 
      1 => & 
      array 
       ... 
      2 => & 
      array 
       ... 
+1

我不明白,你在哪裏試圖顯示任何東西。額外:你確定你想在創建後立即取消設置'$ list'嗎? Oo – KingCrunch 2011-05-13 12:46:22

+0

對「有問題」的變量做var_dump並查看答案。 – 2011-05-13 12:46:35

+0

我做了一個var轉儲,但仍然無法讓它的工作:( – HELP 2011-05-13 12:47:37

回答

2

當您回顯一個變量,並且瀏覽器顯示的「數組」時,您需要更深層次地訪問數組元素。你可能已經嘗試過了,但你的類別數組可以查看你的數組的結構並驗證它是你所期望的。 YOu將能夠分析你明顯的多維數組來判斷你需要多少個循環來獲取類別名稱。

更新:

要走得更深一層,您需要嵌套循環。例如:

foreach($first_level as $first){ 
    foreach($first as $second_level){ 
     echo $second_level; 
    } 
} 
+0

如何我會更深一層? – HELP 2011-05-13 12:54:37

1

這可能是也可能不是你的問題:

$cat[] = &$node; 

如果你只是想類別名稱,那麼你很可能需要使用:

$cat[] = $node["category"]; 

當您另外打印出列表時,子數組將在字符串上下文中轉換爲"Array"

0

我沒有得到LIKE category ASC在查詢結束它應該做什麼? 否則itay moav是對的var_dump它:)有很多非常酷的功能,以正確顯示var_dumpphp manual page