Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何合并具有相同id的两个数组?_Php_Arrays - Fatal编程技术网

Php 如何合并具有相同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) {

第一个数组有两个属性:

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"
  }
第二个阵列:

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