2013-04-07 1 views
0

PHP 배열 array_intersect 함수를 사용하여 교차하고자하는 두 개의 다차원 배열이 있지만 출력하기 전에 array의 한 요소 만 대체해야합니다.PHP가 두 개의 배열을 교차하고 하나의 항목을 대체합니다.

예 :

$array1 = Array(
Array(37768201, 273, Array(602, 603, 604, 605, 606), 0), 
Array(37483503, 473, Array(604, 605, 606), 0), 
Array(37500944, 332, Array(602, 603), 0) 
); 

$array2 = Array(
Array(37768201, 273, Array(602, 603, 604, 605, 606), 13852), 
Array(37483503, 473, Array(603, 604, 605, 606), 13853), 
Array(37500944, 332, Array(602, 603, 604, 605), 13854), 
Array(37483903, 152, Array(602, 603, 604, 605, 606), 13855), 
Array(37483703, 175, Array(602, 603, 604, 605, 606), 13856) 
); 

는 array_intersect 결과 :

$array1 = Array(
Array(37768201, 273, Array(602, 603, 604, 605, 606), 0), 
Array(37483503, 473, Array(604, 605, 606), 0), 
Array(37500944, 332, Array(602, 603), 0) 
); 

예상 결과 :이이 array_uintersect의 istead를 사용

$array1 = Array(
Array(37768201, 273, Array(602, 603, 604, 605, 606), 13852), 
Array(37483503, 473, Array(604, 605, 606), 13853), 
Array(37500944, 332, Array(602, 603), 13854) 
); 

을 할 수 있을까요?

답변

0

당신은 예를 들어 array_intersect()

를 호출 한 후 코드의 작은 조각을 추가 할 수 있습니다

foreach ($array1 as $key => $values) 
    $array1[$key][3] = 13852; 

당신이 변수 인 데이터 말했다 경우, 훨씬 쉽게 될 거라고하지만

. 예를 들어, 숫자 13852은 각 실행마다 (그리고 아마도) 각 하위 배열 ($ array2 [0] [3]! = $ array2 [1] [3])에서 가변적으로 보입니다. 그 코드는 유효하지 않으므로 대신 다음을 사용해야합니다.

foreach ($array1 as $key => $values) 
    $array1[$key][3] = $array2[$key][3]; 

그리고 더 많은 가능한 경우가 있습니다.

+1

감사합니다. 작은 두통으로 피임약처럼되었습니다. ;) –

+0

두 개의 큰 배열에서 요소의 순서가 다를 때 여전히 문제가있을 수 있습니다. –

+0

@ClaudiuOlaru, 왜 내 대답을 받아 들일 수 없는지 이해가 안됩니다. 그것은 단지 발생할 수있는 문제 중 하나 일뿐입니다. 그러나 제가 말했듯이 수백 가지가 더 있습니다. '가능한 경우가 더 많습니다.' 내 답변이 2 주 전에 귀하의 질문에 올바르게 답변되었습니다 ** 귀하의 사례 **가 ** 달라진 경우 직접 해결하려고해야합니다. 불가능할 경우를 대비하여 여기에서 새로운 질문을하거나 개발자에게 지불하십시오. 아니면 배열을 병합하기 위해 모든 큰 work-with-all-cases 코드를 사용하십시오. –