My code is as below,
$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']);
}
}
I'm getting an error called Fatal error: Only variables can be passed by reference...
I'm using php5
You don't use array_push
like that, that's your basic problem. You're trying to fix an error you're producing by casting $products
to an array, which causes a new error. You use array_push
like this:
array_push($products, ...);
You do not assign the return value back to $products
, because the return value is the new number of elements in the array, not the new array. So either:
array_push($products, $sales[$i]['Product']['product']);
or:
$products[] = $sales[$i]['Product']['product'];
Not:
$products = array_push($products, $sales[$i]['Product']['product']);
and most certainly not:
$products = array_push((array)$products, $sales[$i]['Product']['product']);
Please RTM: http://php.net/array_push