2011-05-13 68 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