1

PHP の codeigniter に MVC 構造を設定しました。ただし、何らかの理由で、私のモデルの結果は、私に与えられたのが好きではありません。Invalid argument supplied for foreach(). 私のモデルの大まかなコードは次のとおりです。

class some_model extends CI_Model
{
    function __construct()
    {
        // Call the Model constructor
        $this->load->database();
    }

    function some_func()
    {
       //Prepare return
       $return = array();

       //Do query
       $query = $this->db->query('SELECT tbl.* from tbl');

       //Get array of values
       $result = $query->result_array();

       foreach($result as $row)
       {
           $return[] = array(

               'a'                    => $row['a'],
               'b'                    => $row['b'],
               'c'                    => $row['c']
           );
       }

    return $return;
}

そしてコントローラー:

$this->load->model('some_model');
$stuff = $this->some_model->some_func();

foreach($stuff as $row)
{
   //Do something
}

しかし、コントローラーの foreach ループで常にエラーが発生します。なぜこれが起こっているのか、誰かが考えを持っていますか? 私がチェックしたところ、PHP は$stuff配列 ( is_array($stuff)true を返す) として認識されるため、何が起こっているのかわかりません。モデルの foreach ループが問題ではないことはわかっています。エラーは発生せず、コントローラーのループのみが発生するためです。ヒントをいただければ幸いです。よろしくお願いします!

4

2 に答える 2

1

それで、たくさんの応援の後、私は自分の問題が何であるかを知り、誰かが同じ問題に遭遇した場合に備えてここにそれを置くことにしました。基本的に、質問に投稿されたループの中にネストされたforeachループがいくつかあることがわかったので、次のようなコードがあります。

foreach($stuff1 as $row)
{
   foreach($stuff2 as $row2)
   {
      //Some code
   }
}

私のエラーは2番目の(ネストされた)foreachで発生していましたが、何らかの理由で、PHPは最初のforeach(行番号とすべて)で発生したかのようにエラーを出しました。この問題に私をひっくり返した唯一のことは、エラーが行の数と同じ回数印刷されたという事実でした$stuff1... PHPのエラー行レポート機能に関して、この動作について誰かコメントできますか?ありがとう!

于 2013-03-07T01:42:23.813 に答える
0

変数が配列でない場合、foreach ループに無効な引数が指定されました。foreach ループを使用する前にチェックを追加

if (is_array($stuff)) {...foreach loop...}

$stuff の部分でエラーが発生していると確信していますか? おそらく、クエリから返された非配列値を何らかの形で保持する$resultです。

result_arrayの戻り値を確認してください

于 2013-03-06T23:27:15.560 に答える