Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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,我有两个阵列: 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);