2015-01-06 3 views
1

배열을 병합하지 못했습니다. 배열은 다음과 같다 :array_merge()를 사용하여 배열을 병합 할 수없는 이유는 무엇입니까?

 $premiumBrands = array(); 

     foreach ($stores as $store) : 
      $brands = getBrands($store->brands); 

      echo count($brands['premium']).', '; 

      if(count($brands['premium']) > 0) { 
       array_merge($premiumBrands,$brands['premium']); 
      } 
     endforeach; 

     echo count(premiumBrands); 

루프의 출력 결과이있다 : I이 사용하는 코드

//var_dump() 
array (size=2) 
    0 => 
    object(Brand)[177] 
     (...) 
    1 => 
    object(Brand)[271] 
     (...) 

2, 0, 0, 1, 0는;
마지막 출력의 결과는 다음과 같습니다. 0;

그래서 어떻게 내 배열을 병합 할 수 있습니다 premiumBrands 그래서 그냥 덮어 쓰게됩니다 -

모든 배열의 인덱스 키를 시작하기 때문에

$premiumBrands = $premiumBrands + $brands['premium']; 

작동하지 않습니다 [0]

를 사용하십니까?

그리고 예, 나는 the docs을 읽었습니다. 아직도 그것을 해결할 수 없습니다.

+4

'$ premiumBrands = array_merge (..)'분명하다? – kero

+3

'$ premiumBrands = array_merge ($ premiumBrands, $ brands [ 'premium']); '? 'array_merge'는 새로운 배열을 반환하고 기존 배열을 변경하지 않습니다. 문서 읽기 - http://php.net/manual/en/function.array-merge.php – Bjorn

+0

그냥 오타입니다. $ premiumBrands입니다. – Steven

답변

3

변수에 새 배열을 할당해야합니다. 새 배열에는 루프에서 계속 병합 할 수있는 병합 된 배열이 포함됩니다. 그것은 모두 당신의 키와 값은 당신이하고자하는 일을 할 얻을 무엇인지에 따라 다르지만 문서는 http://php.net/manual/en/function.array-merge.php

$premiumBrands = array(); 

    foreach ($stores as $store) : 
     $brands = getBrands($store->brands); 

     echo count($brands['premium']).', '; 

     if(count($brands['premium']) > 0) { 
      $premiumBrands = array_merge($premiumBrands,$brands['premium']); /// *** /// 
     } 
    endforeach; 

    echo count(premiumBrands); 
+0

에 신경 써야합니다. 하루가 끝나면 나의 두뇌가 울창 해지고 array_merge가 나를 위해 그 일을했다고 생각했습니다. #shouldnotworkwiredired – Steven

+0

PHP가 더러워졌습니다. 일부 함수는 결과를 반환하고 다른 함수는 매개 변수를 조작하지만 대부분의 경우 결과가 반환됩니다. – zgr024

관련 문제