0

codeigniter を使用して、さまざまな db テーブルからデータを取得しています。面白いことに、このコードの上の 10 行で、名前があり、すべてが期待どおりに機能する他の配列を使用してコンセプトをテストしていました。私は自分のデータベースからのデータで同じことを試みているので、うまくいかないようです。

コード

            echo "a:";print_r($CITB);
            echo "<br />b:";print_r($PRB);
            echo "<br />c:";print_r($TB);
            echo "<br />d:";print_r($TRB);


            $a = $CITB; //I know this is empty
            $b = array_diff($PRB,$a);
            $c = array_diff($TB, $b, $a);
            $d = array_diff($TRB, $c, $b, $a);

             echo "<br /><br />a:";print_r($a);
             echo "<br />b:";print_r($b);
             echo "<br />c:";print_r($c);
             echo "<br />d:";print_r($d);die();

結果

a:
b:Array ( [0] => 8 [1] => 52 ) 
c:Array ( [0] => 8 [1] => 52 ) 
d:

a:
b:
c:
d:

期待される結果

a:Array()
b:Array ( [0] => 8 [1] => 52 ) 
c:Array()
d:Array()
4

1 に答える 1

1

array_diff への引数は配列でなければなりません。それ以外の場合は を返しnullます。

あなたの場合、それは空の配列ではprint_r($CITB);なくArray()、おそらく空の文字列であることを意味します。その$b = array_diff($PRB,$a);結果、$bになりnullます。

エラー報告をオンにすると、いくつかの警告が表示されるはずです。それ以外の場合は、var_dump代わりにprint_r変数の型を確認するために使用します。

于 2012-11-14T02:12:19.957 に答える