n
それぞれ連想配列を含むいくつかのインデックス付き配列を接着する必要があります(以下の例)。外側の配列のインデックスは気にしません。内側の配列のキーだけを気にします。私はいくつかの方法を試しましたが、(驚くべきことに) そのうちの 1 つ (最も醜いもの) だけが実際に機能します。それで、私が見逃している賢い/速い何かがあるのではないかと思い始めました。
PHP バージョン: 5.3+ (問題がある場合)
これは私が持っているものです:
$arrayA = array(
array(
'foo' => 1,
'bar' => 2,
'baz' => 3
),
array(
'foo' => 12,
'bar' => 22,
'baz' => 32
),
);
$arrayB = array(
array(
'foo' => 21,
'bar' => 22,
'baz' => 23
),
array(
'foo' => 212,
'bar' => 222,
'baz' => 232
),
);
これは私が持ちたいものです:
$arrayC = array(
array(
'foo' => 1,
'bar' => 2,
'baz' => 3
),
array(
'foo' => 12,
'bar' => 22,
'baz' => 32
),
array(
'foo' => 21,
'bar' => 22,
'baz' => 23
),
array(
'foo' => 212,
'bar' => 222,
'baz' => 232
),
);
これは私が試したことです:
$arrayD = $arrayA;
foreach($arrayB as $value)
{
$arrayD[] = $value;
}
$arrayE = array_push($arrayA, $arrayB);
$arrayF = $arrayA + $arrayB;
$arrayG = array_merge($arrayA, $arrayB);
print_r($arrayC == $arrayD); //TRUE - it works
print_r($arrayC == $arrayE); //FALSE
print_r($arrayC == $arrayF); //FALSE
print_r($arrayC == $arrayG); //FALSE
なぜ私はそれがうまくいかないと思ったarray_merge($arrayA, $arrayB)
のですか:
$arrayD = $arrayA;
foreach($arrayB as $value)
{
$arrayD[] = $value;
}
$arrayE = array_push($arrayA, $arrayB); // <-- after this line $arrayA is already broken
$arrayF = $arrayA + $arrayB;
$arrayG = array_merge($arrayA, $arrayB); // because $arrayA was broken I thought it didn't work
foreach() アプローチよりも簡単/高速/賢い方法はありますか?