简体   繁体   中英

multidimensional compare two array

I have two arrays

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

I want to compare the two arrays for the first array value mac and second array value gname

if value of geo is available in the value of gname then update else do note update else do

not update

for example if a value of an array is available in any array in array2 then UPDATE

else do not update

Here wrote code:

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

result:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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