0

私は2つの配列を持っています

$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 と 2 番目の配列値 gname の 2 つの配列を比較したい

geo の値が gname の値で使用可能な場合は、更新します。そうでない場合は更新を行います。そうでない場合は更新を行います。

更新しない

たとえば、配列の値が array2 の任意の配列で使用可能な場合、UPDATE

それ以外は更新しないでください

4

1 に答える 1

0

ここにコードを書きました:

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

于 2012-06-05T14:17:53.073 に答える