-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返回数组中新的元素数量,当您在第一次迭代中推送数组时它可以工作,但在第二次迭代$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 回答