我在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没有任何索引,请让我知道为什么会这样?
答案 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']);