1

特定のキーと値が一致する配列から別の配列にキーと値 (連想) を追加しようとしています。以下に 2 つの配列を示します。

$array1 = array(
            1 => array(
                'walgreens' => 'location',
                'apples' => 'product1',
                'oranges' => 'product2'
            ),
            2 => array(
                'walmart' => 'location',
                'apples' => 'product1',
                'oranges' => 'product2',
                'milk' => 'product3'
            )
       );
$array2 = array(
            1 => array(
                'walgreens' => 'location',
                'apples' => 'product1',
                'oranges' => 'product2',
                'bananas' => 'product3',
            )
      );

$array1キー「バナナ」と値「product3」を持つように変更しようとしたのは次のとおりです。

$dataCJ = getCJItem($isbn);
         foreach ($array1 as $subKey => $subArray) {
            foreach($subArray as $dkey => $dval){
                foreach($array2 as $cjk => $cjv){
                    foreach($cjv as $cjkey => $cjval){
                         if($dval['walgreens'] == $cjval['walgreens']){
                              $dval['bananas'] = $cjval['bananas'];
                         }
                    }
                }
            }
         }

これはうまくいきません。どうすればこれを修正できますか?

4

2 に答える 2

3

に変更=> $dval=> &$dvalます。現在、新しい変数を作成して書き込んでおり、更新はその場で機能しません。

于 2012-08-03T20:50:17.213 に答える
2

私はarray_merge()機能を見ます!

PHP doc から始めましょう。


特定のケースでは、次のことができます。

foreach($array1 as $key1 => $values1){
    foreach($array2 as $key2 => $values2){
        if($values1[0] == $values2[0]){
            $array1[$key1] = array_merge($values1, $values2);
        }
    }
}

問題を単純化するために、配列の最初の key=> value ペアを逆にする必要があることに注意してください。

このように配列を持つと、非常に簡単になります。

array(
    'location' => "The location (eg:walgreens)",
    //...
);

このようにして、代わりに比較を次のように変更できます。

$values1['location'] == $values2['location']

配列が最初のペアとして場所を使用して構築されていない場合は、どちらがより安全になります。

于 2012-08-03T20:57:43.897 に答える