![](/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.