2 回答

TA贡献1942条经验 获得超3个赞
根据 splash58 的评论,您可以使用array_column()然后合并数组,同时只保留第一项。可以在这里看到一个样本。
<?php
$records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
),
array(
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
),
array(
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
)
);
$records2 = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
),
array(
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
),
array(
'id' => 5624,
'first_name' => 'Peter',
'last_name' => 'Doe',
)
);
$first = array_column($records, null, 'id');
$second = array_column($records2, null, 'id');
$third = $first + $second;
// if you want to reset indexes
// $third = array_values($third);
echo print_r($third);

TA贡献1812条经验 获得超5个赞
你可以这样做:
$result = [];
$array1 = [
[
"id" => 1,
"other_data" => "text1"
],
[
"id" => 2,
"other_data" => "text2"
],
[
"id" => 3,
"other_data" => "text3"
],
];
$array2 = [
[
"id" => 1,
"other_data" => "text1"
],
[
"id" => 8,
"other_data" => "text8"
],
];
$merge_array = function($array, $result) {
foreach($array as $element) {
$id = $element["id"]; //In your case it could be $element->getId()
if(!isset($result[$id])) {
$result[$id] = $element;
}
}
return $result;
};
$result = $merge_array($array1, $result);
$result = $merge_array($array2, $result);
print_r(array_values($result));
- 2 回答
- 0 关注
- 102 浏览
添加回答
举报