2015-01-29 5 views
1

와 배열을 비교 array_diffPHP는 내가 두 배열이 새 배열

Array 
(
    [0] => 4 
) 

$allRequiredIds

을에서 print_r : 지금

Array 
(
    [0] => 4 
    [1] => 1 
) 

내가 한 요소가 $ userBuildingIds는 의 $ allRequiredIds 배열에 있습니다. 그리고 만약 그렇다면, 나는 그들이이 같은 첫 번째 배열에없는 모든 요소의 새로운 배열을 얻을 싶어 : 나는 array_diff으로 이것을 시도

Array 
(
    [0] => 1 
) 

(1 때문이 $ userBuildingIds에없는) 를하지만 저를 준다 (어레이 (2)의 키)이 결과 :

Array 
(
    [1] => 1 
) 

그것은 $userBuildingIds 아닌 곳에 배열 $allRequiredIds의 모든 요소되는 배열을 얻을 수 있지만,없이 $allRequiredIds로부터 열쇠를 복사 할 수 있는가?

+0

반환 된 배열의 키가 마음에 들지 않으면 [배열 _ 값()]] (http://php.net/manual/en/function.array-values.php)을 사용할 수 있습니다. '0'으로 시작하는 키를 갖는 새로운 배열을 얻는다. 따라서 완전한 코드는'array_values ​​(array_diff ($ allRequiredIds, $ userBuildingIds))'입니다. – axiac

+0

감사합니다,이 작동합니다 .. 당신이 대답 할 수 있도록, 나는 당신의 대답을 받아 들일 수 있습니다. – goldlife

+0

나는 당신이 무엇을하려고하는지, 배열에 어떻게 다른 값들이있을 수 있는지 잘 모르겠습니다. 하지만 당신은'$ arr1 = [1,1,1,1,1]; $ arr2 = [1,2]; array_diff ($ arr1, $ arr2);'emty 배열을 반환할까요? 정말 요점이 뭐야? – Alex

답변

3

반환 된 배열의 키가 마음에 들지 않는다면 으로 시작하는 키를 가진 새 배열을 얻으려면 array_values()을 사용할 수 있습니다.

코드는 다음과 같습니다

$diffIds = array_values(array_diff($allRequiredIds, $userBuildingIds)); 

그것은 $userBuildingIds에 존재하지 않는 $allRequiredIds에서 값 목록을 생성합니다. 반환 된 목록에는 0으로 시작하는 숫자 키가 있습니다. $allRequiredIds의 원래 키와 연관되어 있지 않으므로 $userBuildingIds이 그대로 유지됩니다.