PHP array_push 错误

标签 php pass-by-reference array-push

我的代码如下,

$products = array();
for($i=0; $i < sizeof($sales); $i++){
    if(!in_array($sales[$i]['Product']['product'], (array)$products)){
        $products = array_push((array)$products, $sales[$i]['Product']['product']);
    }           
}

我收到一个叫做 fatal error 的错误:只有变量可以通过引用传递...

我正在使用 php5

最佳答案

你不使用 array_push像那样,这是你的基本问题。您正试图通过类型转换 $products 来修复您产生的错误到一个数组,这会导致一个新的错误。您使用 array_push像这样:

array_push($products, ...);

你做不是 将返回值分配回 $products ,因为返回值是数组中的新元素数,而不是新数组。所以要么:
array_push($products, $sales[$i]['Product']['product']);

或者:
$products[] = $sales[$i]['Product']['product'];

不是:
$products = array_push($products, $sales[$i]['Product']['product']);

当然不是:
$products = array_push((array)$products, $sales[$i]['Product']['product']);

请RTM:http://php.net/array_push

关于PHP array_push 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19764749/

相关文章:

php - 如何合并数组中的匹配字符串?

Java 变量在 void 方法后更新

php - PHP中如何合并两个对象

php - 在 Ubuntu 中使用 nginx 和 php7.0-fpm 的 Laravel 5.4 的 502 Bad Gateway

PHP函数设计: passing parameters

Javascript 将类似变量重构为 for 循环

c - 按地址传递、scanf、取消引用

javascript - 在循环中将元素插入数组内,当我不插入一个元素时,其余所有元素都显示为 "undefined"

php - Laravel 手动更新时间戳返回 null

php - 无法跳转到 MySQL 结果索引上的第 0 行..?