PHP array_push错误

时间:2013-11-04 09:25:47

标签: 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']);
    }           
}

我收到一个名为致命错误的错误:只能通过引用传递变量...

我正在使用php5

2 个答案:

答案 0 :(得分:4)

你没有那样使用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

答案 1 :(得分:2)

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