Php 比较两个多维数组并在新数组中输出结果
我有两个阵列:Php 比较两个多维数组并在新数组中输出结果,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有两个阵列: Array ( [0] => Array ( [passers] => 6423 [gdat] => 2019-02-06 ) [1] => Array ( [passers] => 9700 [gdat] => 2019-02-07 ) [
Array
(
[0] => Array
(
[passers] => 6423
[gdat] => 2019-02-06
)
[1] => Array
(
[passers] => 9700
[gdat] => 2019-02-07
)
[2] => Array
(
[passers] => 12559
[gdat] => 2019-02-08
)
)
Array
(
[0] => Array
(
[passers] => 6423
[gdat] => 2019-02-06
)
[1] => Array
(
[passers] => 9604
[gdat] => 2019-02-07
)
[2] => Array
(
[passers] => 11559
[gdat] => 2019-02-08
)
)
第一个数组中的[passers]
值将始终大于第二个数组中的值,因为两个数组中的[gdat]
值始终相同
我需要比较两个[passers]
的值,并将结果输出到一个新数组中:
Array
(
[0] => Array
(
[passers] => 0
[gdat] => 2019-02-06
)
[1] => Array
(
[passers] => 96
[gdat] => 2019-02-07
)
[2] => Array
(
[passers] => 1000
[gdat] => 2019-02-08
)
)
如果您的问题中显示了一对一的对应关系,您可以在array1上循环并从array2中减去值:
$array3 = array();
foreach ($array1 as $key => $value) {
$array3[$key]['passers'] = $value['passers'] - $array2[$key]['passers'];
$array3[$key]['gdat'] = $value['gdat'];
}
如果array2中的键不一定与array1中的键对应,则可以使用array\u search
为给定的gdat
值查找正确的键:
$array4 = array();
foreach ($array1 as $key => $value) {
$key2 = array_search($value['gdat'], array_column($array2, 'gdat'));
$array4[$key]['passers'] = $value['passers'] - $array2[$key2]['passers'];
$array4[$key]['gdat'] = $value['gdat'];
}
对于您的示例数据,两者的结果相同:
Array
(
[0] => Array
(
[passers] => 0
[gdat] => 2019-02-06
)
[1] => Array
(
[passers] => 96
[gdat] => 2019-02-07
)
[2] => Array
(
[passers] => 1000
[gdat] => 2019-02-08
)
)
将数组1放入
$array1
中,将数组2放入$array2
中,并将结果放入$result
$result = [][];
foreach($array1 as $i => $a)
{
// To avoid négative number we call absolute function
$result[$i]['passers'] = abs($a['passers'] - $array2[$i]['passers']);
$result[$i]['gdat'] = $a['gdat'];
}
var_dump($result);