2013-11-04 56 views
1

我的代碼如下,PHP 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

+0

$ products =(array)$ products; //你的方法出錯了 $ products = array_push($ products,$ sales [$ i] ['Product'] ['product']); –

回答

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

+0

是的,這是問題。現在修復並正常工作。謝謝您的幫助 – Irawana

2

第一個參數(在你的情況下爲$products)必須是一個引用,因此必須傳遞一個變量。您現在先將該變量轉換爲數組,並且該轉換的結果不能通過引用傳遞,因爲它未分配給變量。您必須首先將其分配給一個變量或刪除演員。