我正在向$result
数组中添加几个数组。
在下面找我正在做的事情:
$res = array();
$arr1 = array("key1" => array("10","12"));
$arr2 = array("key2" => array("1","11"));
$arr3 = array("key1" => array("10","12"));
$arr4 = array("key2" => array("1","11"));
$res = array_merge($res, $arr1);
$res = array_merge($res, $arr2);
$res = array_merge($res, $arr3);
$res = array_merge($res, $arr4);
print_r($res);
// OUTPUT:
// #######
Array
(
[key1] => Array
(
[0] => 10
[1] => 12
)
[key2] => Array
(
[0] => 1
[1] => 11
)
)
但是,我希望得到以下输出:
Array
(
[key1] => Array
(
[0] => 10
[1] => 12
)
[key2] => Array
(
[0] => 1
[1] => 11
)
[key1] => Array
(
[0] => 10
[1] => 12
)
[key2] => Array
(
[0] => 1
[1] => 11
)
)
如您所见,我想将重复的数组添加到我的结果数组中。
为什么array_merge会替换重复的合并以及如何改变这种行为的任何建议?
感谢您的回复!
答案 0 :(得分:3)
评论说答案是否定的。钥匙本质上是独一无二的。 PHP使用密钥来定位关联的值。
你无法完成你想要的结构,但如果你想要的只是在一个数组结构中拥有所有值,你可以使用这个代码完成它:
$res = array();
$res[] = array("key1" => array("10","12"));
$res[] = array("key2" => array("1","11"));
$res[] = array("key1" => array("10","12"));
$res[] = array("key2" => array("1","11"));
var_dump($res);
// You'll see all your arrays in one structure
答案 1 :(得分:2)
这本来是一个评论,但结果太长了。
您需要了解数组的工作原理,这只是一个简短的小解释。 假设你有一个数组:
$array = array(
'key1' => 'Hello ',
'key2' => 'World',
'key1' => 'Foo ',
'key2' => 'Bar',
);
现在我们尝试使用它:
echo $array['key1'].$array['key2'];
如果我们可以使用相同的键,哪一个会被打印?
Hello world
或Foo bar
?或混合?
实际输出为Foo bar
,因为最后两个将覆盖第一个。
Here是一篇更详细(和更高级)的文章,解释了PHP如何处理数组。