3

次の 2 つの配列があります。

$Array1 = array(array('x1','x2','x3'),array('x4','x5','x6'));
$Array2 = array(array('z1','z2','z3'),array('z4','z5','z6'));

印刷すると、次のように返されます。

Array
(
    [0] => Array
        (
            [x1] => x1
            [x2] => x2
            [x3] => x3
        )

    [1] => Array
        (
            [x4] => x4
            [x5] => x5
            [x6] => x6
        )

)

Array
(
    [0] => Array
        (
            [z1] => z1
            [z2] => z2
            [z3] => z3
        )

    [1] => Array
        (
            [z4] => z4
            [z5] => z5
            [z6] => z6
        )

)

それらを組み合わせて、同じキーを使用して組み合わせた以下の例のような単一の配列を生成するにはどうすればよいですか:

Array
(
    [0] => Array
        (
            [x1] => x1
            [x2] => x2
            [x3] => x3
            [z1] => z1
            [z2] => z2
            [z3] => z3
        )

    [1] => Array
        (
            [x4] => x4
            [x5] => x5
            [x6] => x6
            [z1] => z4
            [z2] => z5
            [z3] => z6
        )

)

私は使用してみました:

array_merge=($Array1,$Array2) 

array_merge_recursive($Array1,$Array2) 

array_combine($Array1,$Array2) [which genereated an error, so I guess I was using it wrong]

$Array1 + $Array2

しかし、これらのどれも機能していません。

4

6 に答える 6

5

このようなものが動作するはずです:

$output = array();
foreach ($Array1 as $key => $arr) {
  $output[] = array_merge($arr, $Array2[$key]);
}
于 2013-07-31T12:49:50.647 に答える
2

これらの関数を多次元配列で使用していることに注意する必要があります。あなたはarray_mergeで正しい軌道に乗っていましたが、配列の2番目のレベルでそれを呼び出す必要があり、最初のレベルを反復する必要があります

したがって、これらの配列の各第 2 レベルの要素でarray_mergeを呼び出すと機能するはずです。

$Array1 = array(array('x1','x2','x3'),array('x4','x5','x6'));
$Array2 = array(array('z1','z2','z3'),array('z4','z5','z6'));
$output = array();

foreach ($Array1 as $key=>$value) {
    $output[$key] = array_merge($value, $Array2[$key]);
    // same as:
    //$output[$key] = array_merge($Array1[$key], $Array2[$key]);
}

そして、$outputに最終的な値が表示されます

于 2013-07-31T12:51:17.280 に答える
1

試す

$Array1 = array_merge(array('x1','x2','x3'),array('x4','x5','x6'));
$Array2 = array_merge(array('z1','z2','z3'),array('z4','z5','z6'));

$Array = array_merge($Array1,$Array2)

ドキュメントはこちら

于 2013-07-31T12:49:56.143 に答える
1

これを試して

$arr1 = array_merge($Array1[0],$Array2[0]);
$arr2 = array_merge($Array1[1],$Array2[1]);
$array = array($arr1, $arr2);
于 2013-07-31T12:50:47.193 に答える
1

これは、数値インデックスがない場合でも機能します。

$Array1 = array(array('x1','x2','x3'),array('x4','x5','x6'));
$Array2 = array(array('z1','z2','z3'),array('z4','z5','z6'));

$new_array = array();

foreach($Array1 as $key => $val) {
    if(array_key_exists($key, $Array2)) {
        $new_array[$key] = array_merge($val, $Array2[$key]);
    }
}

echo '<pre>';
print_r($new_array);
echo '</pre>';
于 2013-07-31T12:54:46.620 に答える
0

これを試して。

<?php
$Array1 = array(array('x1' => 'x1', 'x2' => 'x2', 'x3' => 'x3'),
    array('x4' =>'x4','x5' =>'x5','x6' =>'x6'));


$Array2 = array(array('z1' =>'z1', 'z2' =>'z2', 'z3' =>'z3'),
array('z4' =>'z4','z5' =>'z5', 'z6' =>'z6'));


$final=array();
foreach($Array1 as $key1=>$arr1)
{
 foreach($Array2 as $key2=>$arr2)
  {
    if($key1==$key2)
    {
        $sub=array_merge($arr1,$arr2);
        $final[]=$sub;
    }
   }  
}

echo '<pre>';
print_r($final);
echo '</pre>';

?>

ここで動作するデモを確認できます ( http://codepad.org/1Eu9vjah )

于 2013-07-31T13:18:49.990 に答える