2013-04-07 84 views
0

我有兩個多維數組,我想使用PHP array_intersect函數相交,但在爲此輸出之前,它還必須僅替換數組中的一個元素。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) 
); 

預期結果:

$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) 
); 

難道這使用和array_uintersect istead做些什麼呢?

回答

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

謝謝!這就像一個小頭痛後的藥丸。 ;) – 2013-04-07 22:47:27

+0

儘管這兩個大陣列中的元素順序不同,但仍然可能存在問題。 – 2013-04-18 18:49:18

+0

@ClaudiuOlaru,我不明白你爲什麼不接受我的答案。這只是可能出現的問題之一,但還有數百個問題,正如我所說的那樣:「還有更多可能的情況。」我的答案在2周前正確回答了您的問題,如果您的案件**現在**不同,您應該嘗試自己解決,否則,如果您不能,請在此提出新問題或向開發者付款。或者使用一些大的全功能代碼來合併數組(但不要指望任何人在這裏免費做這樣的事情)。 – 2013-04-22 15:52:24

相關問題