• 首页
• PHP
• 比较两个二维数组&获取交集和差异

# 比较两个二维数组&获取交集和差异 [英] Compare two 2D arrays &amp; get intersection and differences

### 问题描述

``````\$array1 = [
['sight_id' => 13, 'location' => 'Jodhpur, Rajasthan, India'],
['sight_id' => 14, 'location' => 'Jodhpur Jn, Jodhpur, Rajasthan, India'],
['sight_id' => 15, 'location' => 'D-Kirtinagar, Jodhpur, Rajasthan, India'],
];

\$array2 = [
['sight_id' => 13, 'location' => 'Jodhpur, Rajasthan, India'],
['sight_id' => 14, 'location' => 'Jodhpur Jn, Jodhpur, Rajasthan, India'],
['sight_id' => 16, 'location' => 'Jaisalmer, Rajasthan, India'],
['sight_id' => 17, 'location' => 'Fort Road, Amar Sagar Pol, Jaisalmer, Rajasthan, India'],
];
``````

``````\$intersect_array=Array
(
[0] => Array
(
[sight_id] => 13
[location] => Jodhpur, Rajasthan, India

)

[1] => Array
(
[sight_id] => 14
[location] => Jodhpur Jn, Jodhpur, Rajasthan, India
));

\$only_a1=Array(
[0]=> Array
(
[sight_id] => 15
[location] => D-Kirtinagar, Jodhpur, Rajasthan, India

));
\$only_a2=Array(
[1] => Array
(
[sight_id] => 16
[location] => Jaisalmer, Rajasthan, India

)

[2] => Array
(
[sight_id] => 17
[location] => Fort Road, Amar Sagar Pol, Jaisalmer, Rajasthan, India

));
``````

### 推荐答案

``````\$b1 =array();
foreach(\$a1 as \$x)
\$b1[\$x['sight_id']] = \$x['location'];

\$b2 =array();
foreach(\$a2 as \$x)
\$b2[\$x['sight_id']] = \$x['location'];
``````

``````\$c_intersect = array_intersect_key(\$b1,\$b2);
\$c_1 = array_diff_key(\$b1,\$b2);
\$c_2 = array_diff_key(\$b2,\$b1);
``````

``````\$intersect_array = array();
foreach(\$c_intersect as \$i=>\$v)
\$intersect_array[] = array('sight_id'=>\$i,'location'=>\$v);

\$only_a1 = array();
foreach(\$c_1 as \$i=>\$v)
\$only_a1[] = array('sight_id'=>\$i,'location'=>\$v);

\$only_a2 = array();
foreach(\$c_2 as \$i=>\$v)
\$only_a2[] = array('sight_id'=>\$i,'location'=>\$v);
``````