![](/img/trans.png)
[英]append one multidimensional array to another multidimensional array on same key
[英]What is the best way in PHP to append one multidimensional array to another?
我需要粘貼幾個每個包含n
關聯數組的索引數組(下面的示例)。 我不在乎外部數組的索引,只在乎內部數組的鍵。 我嘗試了幾種方法,(令人驚訝的)只有其中一種-最丑陋-確實有效。 所以我開始懷疑我是否缺少聰明/快速的東西。
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()方法更簡單/更快/更聰明的方法?
非常確定array_merge()應該能正常工作。 也許它們並不完全相同,但實際上應該相同。 這可能是一種語義,使它無法返回true,為什么不並排打印它們並找出差異?
也可能用這種方法代替。
我認為array_merge
是您要尋找的:
$arrayC = array_merge($arrayA, $arrayB);
參見此處的工作示例: http : //codepad.org/IJ8UM6Uz
我不確定為什么OP會說array_merge
不起作用:
<?
$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
),
);
//using ARRAY_MERGE
echo "<pre>";
$arrayC = array_merge($arrayA,$arrayB);
echo "ArrayC<br>";
print_r($arrayC);
//using OP's method
$arrayD = $arrayA;
foreach($arrayB as $value)
{
$arrayD[] = $value;
}
echo "ArrayD<br>";
print_r($arrayD);
?>
結果:
ArrayC //array_merge
Array
(
[0] => Array
(
[foo] => 1
[bar] => 2
[baz] => 3
)
[1] => Array
(
[foo] => 12
[bar] => 22
[baz] => 32
)
[2] => Array
(
[foo] => 21
[bar] => 22
[baz] => 23
)
[3] => Array
(
[foo] => 212
[bar] => 222
[baz] => 232
)
)
ArrayD //OP's method..
Array
(
[0] => Array
(
[foo] => 1
[bar] => 2
[baz] => 3
)
[1] => Array
(
[foo] => 12
[bar] => 22
[baz] => 32
)
[2] => Array
(
[foo] => 21
[bar] => 22
[baz] => 23
)
[3] => Array
(
[foo] => 212
[bar] => 222
[baz] => 232
)
)
我想知道區別...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.