2011-03-12 82 views
0

如何合并2个数组到$array3合并阵列,而不会产生密钥

$array1 = array('first', 'second'); 
$array2 = array('third', 'fourth'); 

$array3 = array('first', 'second', 'third', 'fourth'); 

所有功能我发现添加把它变成一个关联数组[0] =>“第一”密钥。我不想要这个。我希望它保持为仅字符串数组。

回答

3

阵列做总是有一个索引/键但它们可使用时可以省略array() language constructor

如果没有为值指定的密钥,最大的整数索引的取和的新的密钥将是值加1

所以array('first', 'second', 'third', 'fourth')相同array(0 => 'first', 1 => 'second', 2 => 'third', 3 => 'fourth')

$a = array('first', 'second', 'third', 'fourth'); 
$b = array(0 => 'first', 1 => 'second', 2 => 'third', 3 => 'fourth'); 
var_dump($a === $b); // bool(true) 
var_dump(var_export($a, true) === var_export($b, true)); // bool(true) 

所以只需使用array_merge

$array3 = array_merge($array1, $array2); 
2
$array3 = array_merge($array1, $array2); 

文档:http://php.net/array_merge

的[0],[1]等的键是您的数组的缺省项 - 每一个阵列具有它们。

+0

事实上,人们从其他语言,这可能是混乱的,但在[阵列上手动](第一句http://php.net/manual/en/ language.types.array.php)说明了一切:_'PHP中的数组实际上是一个有序的映射。 “_ – Wrikken 2011-03-12 10:10:44

1

你总是有你的元素的钥匙。试试这个:

print_r($array1); 

你会看到[0] =>“第一”

这不是跟你使用合并功能的一个问题 - 键简单始终存在。 Probaly你正在寻找解决方案不好 - 不要搜索如何摆脱索引,但尝试重写你的解决方案,其中索引将没有任何意义。