Php 基于共享值将三维阵列与二维阵列合并
我需要根据“id”的共享值将三维数组与二维数组合并 在下面的示例中,“George Washington”的“id”为1。我需要附加他的'value',它在第二个数组中找到,其中'id'也是1 “John Adams”的“id”为2,在第二个数组中找不到该id。因此,他的“值”需要设置为0(或NULL) 最终结果是一个三维数组,其中“value”已添加到原始数组中的每个项 数组#1Php 基于共享值将三维阵列与二维阵列合并,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我需要根据“id”的共享值将三维数组与二维数组合并 在下面的示例中,“George Washington”的“id”为1。我需要附加他的'value',它在第二个数组中找到,其中'id'也是1 “John Adams”的“id”为2,在第二个数组中找不到该id。因此,他的“值”需要设置为0(或NULL) 最终结果是一个三维数组,其中“value”已添加到原始数组中的每个项 数组#1 Array ( [0] => Array ( [0]
Array
(
[0] => Array
(
[0] => Array
(
[id] => 1
[name] => "George Washington"
)
[total] => 8
[average] => 2.5
)
[1] => Array
(
[0] => Array
(
[id] => 2
[name] => "John Adams"
)
[total] => 6
[average] => 3.0
)
[2] => Array
(
[0] => Array
(
[id] => 5
[name] => "James Monroe"
)
[total] => 9
[average] => 2.0
)
)
数组#2
Array
(
[0] => Array
(
[id] => 1
[value] => 12
)
[1] => Array
(
[id] => 5
[value] => 18
)
)
所需结果:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 1
[name] => "George Washington"
)
[total] => 8
[average] => 2.5
[value] => 12
)
[1] => Array
(
[0] => Array
(
[id] => 2
[name] => "John Adams"
)
[total] => 6
[average] => 3.0
[value] => 0
)
[2] => Array
(
[0] => Array
(
[id] => 5
[name] => "James Monroe"
)
[total] => 9
[average] => 2.0
[value] => 18
)
)
到目前为止我所尝试的:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 1
[name] => "George Washington"
)
[total] => 8
[average] => 2.5
[value] => 12
)
[1] => Array
(
[0] => Array
(
[id] => 2
[name] => "John Adams"
)
[total] => 6
[average] => 3.0
[value] => 0
)
[2] => Array
(
[0] => Array
(
[id] => 5
[name] => "James Monroe"
)
[total] => 9
[average] => 2.0
[value] => 18
)
)
我将第一个数组中的所有“id”值分离成一个名为$ids的新数组。然后,在循环第二个数组中的项目时,我检查第二个数组中的“id”是否在$ids数组中找到
但是我被卡住了,因为我不知道如何指定第一个数组中的哪个项需要接收新的“值”。此外,这似乎是一个混乱的解决方案,因为在创建$ids数组时会产生开销。在我写这篇文章之前,甚至都没有意识到您试图列出ID之类的内容,但还是给您<祝你好运强>
$array1\u size=计数($array1);
$array2_size=计数($array2);
//创建包含Array1的所有可用ID的列表
对于($i=0;$i<$array1_size;$i++){
$id_list[]=$array1[$i][0]['id'];
$array1[$i]['value']=NULL;//将NULL添加到所有值字段中
}
//循环通过阵列2
对于($i=0;$i<$array2_size;$i++){
if(在数组($array2[$i]['id'],$id_list)中){//检查id列表中是否存在每个id
$key=array\u search($array2[$i]['id',$id\u list);//获取匹配id的键
$array1[$key]['value']=$array2[$i]['value'];//添加值
}
}
编辑:默认情况下,值现在设置为NULL,因此只有在以后需要时才会更改。谢谢序列化!现在就试用您的解决方案这太棒了,似乎涵盖了除为第二个数组中找不到的id添加0/null值之外的所有内容。我正在写一个ELSE子句来处理这个问题。瞬间回应…哦,对不起,忘了!我让第一个循环将所有的值都设置为NULL,这样那些“有效”的值就可以在以后更改。希望这对你有用。很好用!非常感谢-我会花很长时间自己想出这个主意。