Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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

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_Duplicates_Key Value - Fatal编程技术网

比较两个数组并在一个特定值(php)中找到所有重复项

比较两个数组并在一个特定值(php)中找到所有重复项,php,arrays,multidimensional-array,duplicates,key-value,Php,Arrays,Multidimensional Array,Duplicates,Key Value,我有两个数组,第一个是旧的,第二个是新的。 我想比较两者,只输出重复项 我尝试了一些痛苦的事情:array\u intersect和array\u search没有任何结果 第一个数组(旧)包含以下内容作为输出: [0] => Array ( [id] => old_id_1 [color] => red ) [1] => Array ( [id] => old_id_2 [color] => blue ) [2] =&

我有两个数组,第一个是旧的,第二个是新的。 我想比较两者,只输出重复项

我尝试了一些痛苦的事情:
array\u intersect
array\u search
没有任何结果

第一个数组(旧)包含以下内容作为输出:

[0] => Array (
    [id] => old_id_1
    [color] => red
 )

[1] => Array (
    [id] => old_id_2
    [color] => blue
 )

[2] => Array (
    [id] => old_id_3
    [color] => green
 )

[3] => Array (
    [id] => old_id_4
    [color] => purple
 )

[4] => Array (
    [id] => old_id_5
    [color] => yellow
 )
第二个(新)输出:

[0] => Array (
    [id] => new_id_1
    [color] => blue
)


[1] => Array (
    [id] => new_id_2
    [color] => pink
)


[2] => Array (
    [id] => new_id_3
    [color] => purple
)
作为回报,我想制作如下内容:

We find 2 duplicates colors :
-  blue (new_id_1) in old_id_2 
-  purple (new_id_3) in old_id_4
如果有人有一些想法。

试试这个:

$firstArr  = [
    ['id' => 'old_id_1', 'color' => 'red'],
    ['id' => 'old_id_2', 'color' => 'blue'],
    ['id' => 'old_id_3', 'color' => 'green'],
    ['id' => 'old_id_4', 'color' => 'purple'],
    ['id' => 'old_id_5', 'color' => 'yellow'],
];
$secondArr = [
    ['id' => 'new_id_1', 'color' => 'blue'],
    ['id' => 'new_id_2', 'color' => 'pink'],
    ['id' => 'new_id_3', 'color' => 'purple'],
];

$firstArrAssoc = array_combine(array_column($firstArr, 'color'), array_column($firstArr, 'id'));
$duplicatesArr = [];
foreach ($secondArr as $row) {
    if (array_key_exists($row['color'], $firstArrAssoc)) {
        $duplicatesArr[] = "-  $row[color] ($row[id]) in {$firstArrAssoc[$row['color']]}";
    }
}
echo "We find " . count($duplicatesArr) . " duplicates colors :\n";
echo implode("\n", $duplicatesArr);
输出:

We find 2 duplicates colors :
-  blue (new_id_1) in old_id_2
-  purple (new_id_3) in old_id_4