PHP数组问题

时间:2011-05-13 12:43:37

标签: php arrays

每当我尝试显示类别时,我都会得到名称Array而不是category名称。我想知道如何在下面的代码中显示category名称?

$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
              ...

3 个答案:

答案 0 :(得分:2)

当您回显变量并且浏览器显示“Array”时,您需要更深入地访问数组元素。您可能已经尝试过这个,但是var_dump()您的类别数组可以查看数组的结构并验证它是您预期的结果。你将能够分析你明显的多维数组来判断你需要多少循环来获得类别名称。

更新

要更深入,你需要嵌套循环。例如:

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

答案 1 :(得分:1)

这可能是您的问题,也可能不是:

    $cat[] = &$node;

如果您只想要类别名称,那么您可能需要使用:

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

当您以其他方式打印列表时,子数组将在字符串上下文中转换为"Array"

答案 2 :(得分:0)

我在查询结束时没有得到LIKE category ASC它应该做什么? 否则Itay Moav是正确的var_dump它:)有很多非常酷的功能可以在php manual page上正确显示var_dump