PHP数组推入错误

4

我的代码如下所示:

$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']);
    }           
}

我遇到了一个叫做致命错误:只有变量可以通过引用传递的错误...

我正在使用php5


$products = (array)$products; //这个在你的方法中出了问题 $products = array_push($products, $sales[$i]['Product']['product']); - Sander Visser
2个回答

9
你不应该这样使用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']);

请查看文档:http://php.net/array_push

是的,那就是问题所在。现在已经修复并且正常工作了。感谢您的帮助。 - Irawana

2
第一个参数(在您的情况下为$products)必须是一个引用,因此必须传递一个变量。您现在首先将变量转换为数组,该转换的结果不能通过引用传递,因为它没有分配给变量。您必须先将其分配给一个变量或删除转换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接