PHP array_push错误

Ira*_*ana 2 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']);
    }           
}
Run Code Online (Sandbox Code Playgroud)

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

我正在使用php5

dec*_*eze 5

您不会那样使用array_push,这是您的基本问题。您正在尝试通过强制转换$products为数组来修复正在产生的错误,这会导致新的错误。您可以array_push这样使用:

array_push($products, ...);
Run Code Online (Sandbox Code Playgroud)

不能指定返回值回$products,因为返回值是数组,而不是新的数组中元素的新号码。所以:

array_push($products, $sales[$i]['Product']['product']);
Run Code Online (Sandbox Code Playgroud)

要么:

$products[] = $sales[$i]['Product']['product'];
Run Code Online (Sandbox Code Playgroud)

不:

$products = array_push($products, $sales[$i]['Product']['product']);
Run Code Online (Sandbox Code Playgroud)

最肯定的不是:

$products = array_push((array)$products, $sales[$i]['Product']['product']);
Run Code Online (Sandbox Code Playgroud)

请RTM:http//php.net/array_push