大阵列,问题呼应它

时间:2012-04-05 18:32:17

标签: php arrays echo

我试图回应一个大阵列时遇到了这个问题。

print_r看起来像这样: http://codepaste.net/5js97a

在foreach循环中回显出前两行是没有问题的: $ item ['name'],但对于其余的更深入的数组,我只是得到一个错误。

谢谢!

代码:

function categories($parent = NULL) {
      $query = $this->db->where('parent_id', $parent)->get('categories');
      $results = $query->result_array();

      foreach($results as $result) {
           $child_array = Forummodel::categories($result['id']);
           if(sizeof($child_array) == 0) {
                array_push($results, $result['name']);
           } else {
                array_push($results, array($result['name'], $child_array));
           }
      }

      return $results;
} 

我也使用codeigniter

1 个答案:

答案 0 :(得分:0)

您正在迭代增加的数组。这是你的代码:

function categories($parent = NULL) {
    $query = $this ->db ->where('parent_id', $parent) ->get('categories');
    $results = $query->result_array();
    foreach($results as $result) {
        $child_array = Forummodel::categories($result['id']);
        if(sizeof($child_array) == 0) {
            array_push($results, $result['name']);
        } else {
            array_push($results, array($result['name'], $child_array));
        }
    }
    return $results;
}

foreach正在向下迭代数组$results,并且每次循环都会添加它,加上当你遇到$result不包含'id'或'name的迭代时'你可能得到了错误。您可能希望将子数组放入另一个数组中,并在foreach循环后将它们合并,如果您仍想这样做。