2016-06-14 10 views
0

2つの配列をキーに一致させて2つの配列をマージする必要があり、残りは空にする必要があります。私はarray_merge、array_diff、array_fillを試してみましたが、iam bit newbieに何の助けもありませんでした。PHP配列とキーのマージが一致する

アレイ1

Array 
    (
     [5] => PHM 
     [4] => ODM 
     [3] => N 
     [6] => M9 
     [10] => RDM9 
    ) 

アレイ2

Array 
    (
    [0] => 01 
    [1] => 02 
    [2] => 03 
    [3] => 04 
    [4] => 05 
    [5] => 06 
    [6] => 07 
    [7] => 08 
    [8] => 09 
    [9] => 10 
    [10] => 11 
    [11] => 12 
    [12] => 13 
    ) 

最終出力

Array 
    (
    [0] => null 
    [1] => null 
    [2] => null 
    [3] => N 
    [4] => ODM 
    [5] => PHM 
    [6] => M9 
    [7] => null 
    [8] => null 
    [9] => null 
    [10] => RDM9 
    [11] => null 
    [12] => null 
    ) 
+1

として値を割り当てる他に、NULLに要素$output[$key]の値を設定しますか? –

+0

ええ、あなたが試したことを読者に伝えても、そのことがなぜうまくいかなかったのかを伝えるのは無駄です。 –

+0

他の配列の値に 'null'を付けるのはなぜですか? – jszobody

答えて

5

すべてのヌルを持つ配列を作成しますその場合は、foreachループにアレイ2を渡すと配列2のキーが配列1に存在するかどうかを確認する場合/他なステートメントを使用することができます

$arr2 = array_fill_keys(array_flip($arr2), null); 
$new = array_replace($arr2, $arr1); 
print_r($new); 
+0

ありがとうございました。 – Crysis

+0

喜んで助けることができます。 – splash58

+0

私は最初の配列にキー '20'がありますが、2番目にはありません。最後の配列に塗りつぶしとして表示されます。 – ConstantineUA

1

と第二のアレイから第一配列から値で置き換えます`array_merge`を使用した場合、出力は何をした$arr1[key]

foreach ($arr2 as $key=> $value){ 
     $output[$key]=(!array_key_exists($key, $arr1)) ? NULL : $arr1[$key]; 
    } 
    var_dump($output); 
+0

誰がdownvoteが何だったかを説明する気に?それは最速の解決策ではないかもしれませんが、要件を満たしていますか?いいえ?? – SML

+1

私のdownvoteではありませんが、 'global $ arr1; 'のため – splash58

+0

foreachは関数と異なり、可変スコープを変更しないと考えます。 – splash58

関連する問題