-5

PHPのarray_push関数で奇妙な問題に直面しています。

私のコードを見てみましょう:

$sets_collection=array();
foreach($result['ques'] as $val){
      $sets_collection=array_push($sets_collection,$val['set']);
      }

それは私にエラーを与えるよりも:メッセージ:array_push()はパラメータ1が配列であることを期待しています。

しかし、私がこれを行うと、うまくいきます:

$sets_collection=array();
      $i=0;
        foreach($result['ques'] as $val)
        {
        $sets_collection[$i]=$val['set']; 
        $i++;
        }

私の質問は、なぜこれが起こるのか、プッシュ操作を実行できるよりも配列のインデックスが必要ですか?? 私の最初のケースでは、配列 $set_collection にインデックスがないため、なぜこれが起こったのか教えてください??

4

4 に答える 4

3

これを試して

$sets_collection=array();

foreach($result['ques'] as $val){
    array_push($sets_collection,$val['set']); 
}
于 2012-11-19T13:32:25.510 に答える
2

これarray_push()は、配列内の新しい要素数を返すためです。戻り値を配列変数に代入しません。最初のパラメーターは、実際には参照によって渡されます。したがって、その値は関数によって変更されます。

于 2012-11-19T13:34:02.377 に答える
2

これはarray_push、配列内の新しい要素数を返すためです。最初の反復で配列をプッシュすると機能しますが、2 番目の反復$sets_collection becomes 1ではinteger関数が前述のエラーで失敗します。

参考:array_push()

于 2012-11-19T13:36:07.670 に答える
0

array_pushは配列を返さず、整数のみを返します。おそらく、 のsets_collection戻りが期待されるため、変数が整数に変更されたと推定されるためarray_push、後続のパラメーターも整数として扱われます。

割り当てを削除するだけで、正常に動作するはずです。

array_push($sets_collection,$val['set']);
于 2012-11-19T13:57:57.350 に答える