Php 如何合并具有相同id的两个数组?
第一个数组有两个属性: id,文本 第二个数组有两个属性 身份证,伯爵 如何按id将它们组合成一个数组,其中新数组将具有三个属性: 身份证 文本 计数 第一个阵列:Php 如何合并具有相同id的两个数组?,php,arrays,Php,Arrays,第一个数组有两个属性: id,文本 第二个数组有两个属性 身份证,伯爵 如何按id将它们组合成一个数组,其中新数组将具有三个属性: 身份证 文本 计数 第一个阵列: array(2) { [0]=> object(stdClass)#351 (2) { ["id"]=> string(1) "1" ["text"]=> string(5) "tree" } [1]=> object(stdClass)#348 (2) {
array(2) {
[0]=>
object(stdClass)#351 (2) {
["id"]=>
string(1) "1"
["text"]=>
string(5) "tree"
}
[1]=>
object(stdClass)#348 (2) {
["id"]=>
string(1) "2"
["text"]=>
string(8) "house"
}
第二个阵列:
array(2) {
[0]=>
object(stdClass)#351 (2) {
["id"]=>
string(1) "1"
["count"]=>
string(5) "3"
}
[1]=>
object(stdClass)#348 (2) {
["id"]=>
string(1) "2"
["count"]=>
string(8) "4"
}
我试过:
array\u merge\u recursive,array\u merge,它们仅将两个数组合并为一个长数组
上述阵列的预期输出:
array(2) {
[0]=>
object(stdClass)#351 (2) {
["id"]=>
string(1) "1"
["count"]=>
string(5) "3"
string(1) "1"
["text"]=>
string(5) "tree"
}
[1]=>
object(stdClass)#348 (2) {
["id"]=>
string(1) "2"
["count"]=>
string(8) "4"
string(1) "2"
["text"]=>
string(8) "house"
}
您可以编写一个简单的函数,如果第二个数组中的对象的id与第一个数组中的对象的id匹配,则该函数将合并第二个数组中对象的属性:
array(2) {
[0]=>
object(stdClass)#351 (2) {
["id"]=>
string(1) "1"
["text"]=>
string(5) "tree"
}
[1]=>
object(stdClass)#348 (2) {
["id"]=>
string(1) "2"
["text"]=>
string(8) "house"
}
函数对象数组合并($a1,$a2){
$newAry=[];
foreach($a1为$idx=>$obj1){
//克隆对象以防止更改$a1中的对象
$newAry[$idx]=克隆$obj1;
foreach($a2作为$obj2){
/**
**如果两个对象的id属性匹配,
**从第二个数组对象复制属性
**到新对象(第一个阵列对象的克隆)。
*/
如果($newAry[$idx]->id===$obj2->id){
foreach($obj2作为$prop=>$val){
$newAry[$idx]->$prop=$val;
}
}
}
}
返回$newAry;
}
//要运行:
$mergedArray=obj_array_merge($array1,$array2);
但是,请注意,这不会很快。对于大量的对象,它可能会变得非常慢,因为它必须迭代两个数组来检查匹配。它还将用第二个数组对象的属性覆盖新数组对象中存在的属性(您没有指定这是否是一个问题)。请添加一个标记以指定问题的语言(PHP?)。您是在谈论PHP吗?是的PHP数组。.我添加了标记没有用于深度合并的API。您需要迭代和合并您自己您可以尝试
array\u merge\u recursive