2013-11-04 2 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_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']); 

Please RTM : http://php.net/array_push

+0

예, 그게 문제였습니다. 고정되어 현재 잘 작동합니다. 도와 주셔서 감사합니다 – Irawana

2

첫 번째 매개 변수 (귀하의 경우 $products)는 참조 여야하므로 변수를 전달해야합니다. 이제 변수를 배열에 캐스트하고 변수에 할당되지 않았으므로 해당 캐스트의 결과를 참조로 전달할 수 없습니다. 변수에 먼저 할당하거나 캐스트를 제거해야합니다.