2017-11-30 9 views
1

私は2つの配列を持っています。 私の2 arrray新しいarrrayを多次元で追加するにはどうすればいいですか?Array

$arrayItems = array(
    array(
    "item" => "firstname", 
    "value"=>"John" 
    ), 
    array(
    "item" => "lastname", 
    "value"=>"Doe" 
    ), 
    array(
    "item" => "adress", 
    "value"=>"3 garden street" 
    ), 
    array(
    "item" => "Tel", 
    "value"=>"123456" 
    ) 
); 

$arrayValue = array(

    array(
    "isAlias" => "false" 
    ), 
    array(
    "isAlias" => "false" 
    ), 
    array(
    "offical" => "true" 
    ), 
    array(
    "active" => "true" 
    ) 
); 

私はこのような二 からのデータと私の拳のアレイに新しい行を追加したいと思います:あなたのための おかげであなたを:-)あなたの助け

array (size=4) 
    0 => 
    array (size=3) 
     'item' => string 'firstname' (length=9) 
     'value' => string 'John' (length=4) 
     'isAlias' => string 'false' (length=5) 
    1 => 
    array (size=3) 
     'item' => string 'lastname' (length=8) 
     'value' => string 'Doe' (length=3) 
     'isAlias' => string 'false' (length=5) 
    2 => 
    array (size=3) 
     'item' => string 'adress' (length=6) 
     'value' => string '3 garden street' (length=15) 
     'offical' => string 'true' (length=4) 
    3 => 
    array (size=3) 
     'item' => string 'Tel' (length=3) 
     'value' => string '123456' (length=6) 
     'active' => string 'true' (length=4) 

おかげであなたを助け:-)

+3

array_mergeで遊ぶ - http://php.net/manual/en/function.array-merge.php –

答えて

3

両方の配列が常に同じ長さで、arrayItemsとarrayValuesに存在する配列またはキーの両方で順序に問題がない場合は、単純です:

$result = array(); 
foreach ($arrayItems as $key => $value) { 
    $result[] = $arrayItems[$key] + $arrayValues[$key]; 
} 

問題(上書きなど)に遭遇した場合は、具体的に質問を編集してください。

編集:私の答えは$ result []である必要があります。

は私の答えと別の答えの間にいくつかの小さな違いがあり、私はそれを説明するように感じる:

  • 配列()と[]と同じです。それらは空の配列を作成します。
  • foreachとforは、配列が適切にソートされ、索引付けされている場合に同じように動作します。それはあなたが好きなことはあなた次第です。
  • $ result []とarray_pushは非常によく似ています。 1つの違いは、array_pushには初期化された配列が必要ですが、[]では必要に応じて作成されます。もう1つは、array_pushに2つ以上のパラメータを使用できるということです。
  • 両方の配列にキーがある場合、+演算子とarray_mergeは主に異なります。 +は最初のものを保持します。最後をマージします。他にも微妙な違いがあります。

編集2または、別の答えで示唆されているようにarray_mapを使用してください。しかし、私はこの壁を削除していません。

+0

+1テキストのあなたの壁のために立ってのために。 :)しかし、本当に、それは非常によく説明された答えです。ただ1つの提案 - 非公式のサイトポリシーは、** Edit **などで編集内容にラベルを付けることではありません。投稿の編集履歴では、変更された内容を十分に確認できます。関連メタポスト:https://meta.stackoverflow.com/questions/255644/should-edit-in-edits-be-discouraged –

0
$i = 0; 
foreach($arrayItems as $arrayItem) 
{ 
    array_push($arrayItem[$i]["isAlias"],$arrayValue[$i]["isAlias"]); 
    $i++; 
} 
0

あなたは、両方のインデックスをマージしforループ内array_merge()を利用することができます:これはhereワーキング見ることができます

array (size=4) 
    0 => 
    array (size=3) 
     'item' => string 'firstname' (length=9) 
     'value' => string 'John' (length=4) 
     'isAlias' => string 'false' (length=5) 
    1 => 
    array (size=3) 
     'item' => string 'lastname' (length=8) 
     'value' => string 'Doe' (length=3) 
     'isAlias' => string 'false' (length=5) 
    2 => 
    array (size=3) 
     'item' => string 'adress' (length=6) 
     'value' => string '3 garden street' (length=15) 
     'offical' => string 'true' (length=4) 
    3 => 
    array (size=3) 
     'item' => string 'Tel' (length=3) 
     'value' => string '123456' (length=6) 
     'active' => string 'true' (length=4) 

$merge = []; 
for ($i = 0; $i < count($arrayItems); $i++) { 
    array_push($merge, array_merge($arrayItems[$i], $arrayValue[$i])); 
} 
var_dump($merge); 

以下になり。

これは、両方の配列の順序が常に一貫していることを前提としています。

希望すると便利です。 :)

1

array_mergeを2つの配列にマップできます。

$result = array_map('array_merge', $arrayItems, $arrayValue); 
0
reset($arrayItems); 
reset($arrayValue); 
foreach($arrayValue as $value){ 
$aKey = key($value); 
//. no size limitation on arrays 
$arrayItems[key($arrayItems)][$aKey] = $value[$aKey]; 
next($arrayItems); 
} 
print_r($arrayItems); 
関連する問題