繁体   English   中英

多维比较两个数组

[英]multidimensional compare two array

我有两个数组

$array1 = array(0=>array('mac'=>'mac0','geo'=>'geo0'),1=>array('mac'=>'mac1','geo'=>'geo1'),
2=>array('mac'=>'mac2','geo'=>'geo2')...);


$array2 = array(0=>array('id'=>'id0','gname'=>'gname0'),1=>array('id'=>'id1','gname'=>'gname1'),
2=>array('id'=>'id2','gname'=>'gname2')...);

我想比较两个数组的第一个数组值mac和第二个数组值gname

如果geo的值在gname的值中可用,则更新else做注释更新else做

不更新

例如,如果数组的值在array2中的任何数组中均可用,则UPDATE

否则不更新

这里写的代码:

    $array1 = array(0=>array('mac'=>'mac0','geo'=>'geo0'),1=>array('mac'=>'mac1','geo'=>'geo1'),
2=>array('mac'=>'mac2','geo'=>'geo2'));


$array2 = array(0=>array('id'=>'id0','gname'=>'gname0'),1=>array('id'=>'id1','gname'=>'gname1'),
2=>array('id'=>'id2','gname'=>'gname2'));

function gluearray($ar1, $ar2) {
    foreach($ar2 as $key=>$value) {
        if(isset($ar1[$key])) {
            if(is_array($ar1[$key])) {
                $ar1[$key] = gluearray($ar1[$key], $value);
            } else {
                if($ar1[$key]!==$value) {
                    $ar1[$key] = $value;
                }
            }
        } else {
            $ar1[$key] = $value;
        }
    }
    return $ar1;
}
print_r(gluearray($array1, $array2));

结果:

数组([0] =>数组([mac] => mac0 [geo] => geo0 [id] => id0 [gname] => gname0)[1] =>数组([mac] => mac1 [geo] => geo1 [id] => id1 [gname] => gname1)[2] =>数组([mac] => mac2 [geo] => geo2 [id] => id2 [gname] => gname2)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM