Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 基于共享值将三维阵列与二维阵列合并_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 基于共享值将三维阵列与二维阵列合并

Php 基于共享值将三维阵列与二维阵列合并,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]

我需要根据“id”的共享值将三维数组与二维数组合并

在下面的示例中,“George Washington”的“id”为1。我需要附加他的'value',它在第二个数组中找到,其中'id'也是1

“John Adams”的“id”为2,在第二个数组中找不到该id。因此,他的“值”需要设置为0(或NULL)

最终结果是一个三维数组,其中“value”已添加到原始数组中的每个项

数组#1

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,这样那些“有效”的值就可以在以后更改。希望这对你有用。很好用!非常感谢-我会花很长时间自己想出这个主意。