2012-09-27 3 views
0

Fatal error: Cannot use string offset as an array in C:\xampp\htdocs\includes\categories\categories.php on line 12치명적인 오류 : 문자열 배열

$categories[$parent][] = $row; 

categories.php 오프셋 (offset) 사용할 수 없습니다

<?php 

$sql = "SELECT catid, catname, parentid FROM categories"; 
$res = mysql_query($sql); 
while ($row = mysql_fetch_assoc($res)) { 
    $parent = intval($row['parentid']); 
    if (!isset($categories[$parent])) { 
     $categories[$parent] = array(); 
    } 
    $categories[$parent][] = $row; 
} 
    ?> 
    <table border="0" cellpadding="10" cellspacing="0"> 
    <tr> 
     <td valign="top"> 
    <?php 
    $category_string = ""; 
    function build_categories_options($parent, $categories, $level) { 
     global $category_string; 
     if (isset($categories[$parent]) && count($categories[$parent])) { 
      $level .= " - "; 
      foreach ($categories[$parent] as $category) { 
       $opt_value = substr($level.$category['catname'],3); 
       $category_string .= '<option value=""></option><option value="'.$category['catid'].'">'.$opt_value.'</option>'; 
       build_categories_options($category['catid'], $categories, $level); 
      } 
      $level = substr($level, -3); 
     } 
     return $category_string; 
    } 
    $category_options = build_categories_options(0, $categories, ''); 
    $category_options = '<select class="chosen" name="categories" id="categories">'.$category_options.'</select>'; 
    echo $category_options; 
    ?> 
</td> 

나는이 오류가 표시됩니다 범주와 포스트를 삽입 한 후 ??

+0

12 번째 줄을 알려주십시오. – Flosculus

+0

'$ categories' 란 무엇입니까? 나는 그것이 문자열이라고 내기를한다. 또는'$ categories [$ parent]'는 문자열이다. – Travesty3

+0

메신저 같은 생각. http://stackoverflow.com/questions/2058635/cannot-use-string-offset-as-an-array-error – Flosculus

답변

0

$categories이 초기화 된 곳을 볼 수 없지만 while 루프를 입력 할 때 배열이 아니므로 오류가 발생합니다. 당신의 while 루프이 일을보십시오 : 당신이 $categories[$parent][] = $row;를 호출 할 때

// initialize $categories to make sure it is an array 
$categories = array(); 
while ($row = mysql_fetch_assoc($res)) { 
    $parent = intval($row['parentid']); 
    $categories[$parent][] = $row; 
} 

당신은 ...이 자동으로 수행됩니다 명시 적으로 $categories[$parent]를 초기화 할 필요가 없습니다. 루프 전에 빈 배열로 시작 했으므로 빈 칸으로 시작한다는 것을 알고 있습니다.