3

我的代码如下,

$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

4

2 回答 2

8

你不要那样使用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

于 2013-11-04T09:35:44.800 回答
2

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

于 2013-11-04T09:30:04.300 回答