-3

大きなアレイをエコーアウトしようとすると、この問題が発生しました。

print_rは次のようになります: http://codepaste.net/5js97a

foreachループで次のように最初の2行をエコーアウトするのに問題はありません:$ 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を使用しています

4

1 に答える 1

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 ループの後でそれらをマージしたい場合は、それらをマージすることをお勧めします。

于 2012-04-05T19:33:07.797 に答える