2011-05-13 5 views
-1

범주를 표시 할 때마다 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

+0

"문제가있는"변수에 대해 var_dump를 수행하고 대답을 확인하십시오. –

+0

나는 var 덤프를 했는데도 작동하지 못했습니다. ( – HELP

답변

2

, 당신은 배열 요소에 액세스 할 또 다른 수준의 깊은 이동해야합니다. 이미 시도한 적이 있지만 var_dump() 카테고리 배열을 사용하여 배열 구조를보고 원하는 것으로 확인하십시오. 귀하는 분명한 다차원 배열을 분석하여 카테고리 이름에 도달하는 데 필요한 루프의 수를 판단 할 수 있습니다.

업데이트 :

더 깊이 들어가려면 중첩 루프가 필요합니다. 예를 들어 :

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

좀 더 깊게 갈 수 있을까요? – HELP

1

이 수도 또는 문제가되지 않을 수 있습니다 방금 범주 이름을 원하는 경우에

$cat[] = &$node; 

는, 당신은 가능성이 사용해야 할 것 :

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

다른 방법으로 목록을 인쇄하면 하위 배열은 문자열 컨텍스트에서 "Array"으로 변환됩니다.

0

질의 끝에 LIKE category ASC이 표시되지 않습니다. 어떻게해야합니까? 그렇지 않으면 Itay Moav가 맞습니다 var_dump :) php manual page에 정확히 var_dump을 올바르게 표시하는 기능이 있습니다.