PHP数组推送错误

PHP数组推送错误,php,pass-by-reference,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']); } } $prod

我的代码如下:

$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']);
    }           
}
$products=array();
对于($i=0;$i
我得到一个名为致命错误的错误:只有变量可以通过引用传递


我使用的是php5

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

你没有像那样使用
array\u push
,这是你的基本问题。您试图通过将
$products
强制转换到数组来修复产生的错误,这会导致新的错误。您可以像这样使用
array\u push

array_push($products, ...);
您不会将返回值重新分配给
$products
,因为返回值是数组中新的元素数,而不是新数组。因此,要么:

array_push($products, $sales[$i]['Product']['product']);
或:

不是:

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

$products = array_push($products, $sales[$i]['Product']['product']);
$products = array_push((array)$products, $sales[$i]['Product']['product']);

请RTM:

$products=(数组)$products//这在您的方法$products=array_push($products,$sales[$i]['Product']['Product'])中出错;是的,这就是问题所在。已修复,现在工作正常。谢谢你的帮助