我的代码如下,
$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
答案 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']);
答案 1 :(得分:2)
第一个参数(在您的情况下为$products
)必须是引用,因此必须传递变量。现在,您首先将变量转换为数组,并且不能通过引用传递该转换的结果,因为它未分配给变量。您必须先将其分配给变量或删除强制转换。