[英]PHP Exclude Dups Merging Multidimensional Arrays
我想合並兩個多維數組。 請考慮以下情形。 我有兩個數組要合並。 但是,我想刪除/避免合並任何重復的記錄,因為它們共享“ documentId”,因此可以將它們標識出來。
數組#1
Array
(
[0] => Array
(
['documentId'] => 124
['name'] => "Title #1"
['version'] => "1"
)
[1] => Array
(
['documentId'] => 123
['name'] => "Title #2"
['version'] => "1"
)
)
陣列#2
Array
(
[0] => Array
(
['documentId'] => 123
['name'] => "Title #2 updated"
['version'] => "2"
)
)
新陣列/合並陣列
Array
Array
(
[0] => Array
(
['documentId'] => 123
['name'] => "Title #2 updated"
['version'] => "2"
)
[1] => Array
(
['documentId'] => 124
['name'] => "Title #2"
['version'] => "1"
)
)
我看過array_replace_recursive()函數。 我無法使用它,因為它需要專門比較屬性'documentId'而不是數組的鍵。
只需遍歷數組,然后將它們設置為另一個以文檔ID為鍵的數組。 以后的值將覆蓋已經設置的先前值。
例:
$merged = array();
foreach($array1 as $value){
$merged[$value['documentId']] = $value;
}
foreach($array2 as $value){
$merged[$value['documentId']] = $value;
}
合並$ arr1和$ arr2時,將documentId設置為鍵
$new_array = array();
foreach ( $arr1 as $v ) {
$new_array[ $v['documentID'] ] = $v;
}
foreach ( $arr2 as $v ) {
$new_array[ $v['documentID'] ] = $v;
}
array_column()
可以使用documentID
重新索引,以便array_replace()
替換$array1
中在$array2
中具有相同鍵的元素:
$result = array_replace(array_column($array1, null, 'documentId'),
array_column($array2, null, 'documentId'));
然后,如果需要重新編制索引:
$result = array_values($result)
按兩個數組循環,如果需要,可以合並或替換值
<?php
$students1 = array(
0 => array(
'student_id' => 1,
'name' => 'John',
'enrollment' => 'AAA111'
),
1 => array(
'student_id' => 2,
'name' => 'Mike',
'enrollment' => 'BBB222'
)
);
$students2 = array(
0 => array(
'student_id' => 1,
'name' => 'John',
'enrollment' => 'AAA111'
),
1 => array(
'student_id' => 3,
'name' => 'Anton',
'enrollment' => 'BBB333'
)
);
$students = [];
foreach ($students1 as $student) {
$students[$student['student_id']] = $student;
}
foreach ($students2 as $student) {
if (!isset($students[$student['student_id']])) {
$students[$student['student_id']] = $student;
}
}
var_dump(array_values($students));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.