php中array_push()的奇怪行为

时间:2012-11-19 13:30:17

标签: php arrays

我在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 个答案:

答案 0 :(得分:3)

试试这个

$sets_collection=array();

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

答案 1 :(得分:2)

那是因为array_push()返回数组中新的元素数。您不会将返回的值分配给数组变量。第一个参数实际上是通过引用传递的。因此,它的值会被函数变异。

答案 2 :(得分:2)

这是因为array_push返回数组中新元素的数量,当你在第一次迭代中推送数组时它可以工作但是在第二次迭代中$sets_collection becomes 1这是一个integer所以函数因上述错误而失败。

参考:array_push()

答案 3 :(得分:0)

array_push不返回数组 - 只是一个整数。也许由于sets_collection的预期返回而假定变量array_push已更改为整数,因此后续参数也被视为整数。

只需删除作业,就可以正常使用。

array_push($sets_collection,$val['set']);