比较两个多维数组 &得到差异 &两个不同数组中的唯一值 PHP [英] Compare two multidimensional arrays & Get difference & unique values in two different arrays PHP

查看:65
本文介绍了比较两个多维数组 &得到差异 &两个不同数组中的唯一值 PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个多维数组..

$a1= Array
(
    [0] => Array
        (
            [sight_id] => 13
            [location] => Jodhpur, Rajasthan, India

        )

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

    [2] => Array
        (
            [sight_id] => 15
            [location] => D-Kirtinagar, Jodhpur, Rajasthan, India

        )

   );


$a1= Array
(
    [0] => Array
        (
            [sight_id] => 13
            [location] => Jodhpur, Rajasthan, India

        )

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

       [2] => Array
        (
            [sight_id] => 16
            [location] => Jaisalmer, Rajasthan, India

        )

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

        ));

我想将上面给定的数组分成三个不同的数组..

I want to split above given arrays into three different arrays..

$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

        ));

推荐答案

将数组转换为一种格式,其中数组索引是sight_id:

Convert arrays to a format, where array index is the sight_id:

$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);

将数组转换回您的格式:

Convert arrays back to your format:

$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);

这篇关于比较两个多维数组 &得到差异 &两个不同数组中的唯一值 PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆