我试图回应一个大阵列时遇到了这个问题。
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
答案 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循环后将它们合并,如果您仍想这样做。