2017-12-23 21 views
0

私は2つの連想配列を持っている:私は最終的に同じ値を維持する必要がありますのでPHPで2つの他のassoc配列を使って新しいassoc配列を作成するには?

$arraytotal=[key1=>$value1,key2=>$value2,key3=>$value3,key1=>$value1,key2=>$value2,key4=>$value4]; 

array_mergeはオプションではありません:以下の配列を作成する方法

$array1=[key1=>$value1,key2=>$value2,key3=>$value3]; 

$array2=[key1=>$value1,key2=>$value2,key4=>$value4];

アレイ。 Tnx。

+1

それはできません。すでに存在するインデックスを追加すると、古いインデックスが置き換えられます。たとえば、「key1」は2つありません。 –

+0

2つのキーに同じ名前を付けることはできないので、ここで入力するのと正確に一致することはありません。しかし、同様の結果を持つ多次元配列を得ることができます。 – Andreas

+0

これはあなたが得ることができる最高です。 https://3v4l.org/dQiPW – Andreas

答えて

0

複数のキーを同じ値に設定することはできません(各配列にkey1があります)。これまで見たように、array_mergeを使用すると、2番目のkey1が最初のキーを上書きします。

元の各配列が別々のキー/値ペアのグループとして機能するかどうか、または類似したキーと値のペアをグループ化するかどうかによって、オプションが異なります。

ので、最初のものは簡単です:

$array1=[key1=>$value1,key2=>$value2,key3=>$value3]; 
$array2=[key1=>$value1,key2=>$value2,key4=>$value4]; 

$super = [$array1, $array2]; 

目はもう少しループを必要とします:

$array1=[key1=>$value1,key2=>$value2,key3=>$value3]; 
$array2=[key1=>$value1,key2=>$value2,key4=>$value4]; 

$super = []; 

foreach ($array1 as $key => $value) { 
    $super[$key] = [$value]; 
} 

foreach ($array2 as $key => $value) { 
    if (!isset($super[$key])) { 
     $super[$key] = []; 
    } 

    $super[$key][] = $value; 
} 

あなたは常に、各配列のキーと同じキーを持っているだろうことがわかっている場合は、 isset

関連する問題