php - tab - str_replace正则




无法在PHP中连接2个数组 (7)

我最近学会了如何使用PHP中的+运算符连接2个数组。

但请考虑这段代码......

$array = array('Item 1');

$array += array('Item 2');

var_dump($array);

输出是

array(1){[0] => string(6)“Item 1”}

为什么这不起作用? 跳过速记并使用$array = $array + array('Item 2')也不起作用。 它与钥匙有关吗?


+被称为Union运算符,它与Concatenation运算符不同(PHP没有用于数组的运算符)。 description清楚地说:

+运算符将右手数组中剩余键的元素附加到左手,而重复键不会被覆盖。

用例子:

$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b;

array(3) {
  ["a"]=>
  string(5) "apple"
  ["b"]=>
  string(6) "banana"
  ["c"]=>
  string(6) "cherry"
}

由于两个数组都有一个键为0条目,因此结果是预期的。

要连接,请使用array_merge


两者都有一个0的键,组合数组的方法将折叠重复。 尝试使用array_merge()代替。

$arr1 = array('foo'); // Same as array(0 => 'foo')
$arr2 = array('bar'); // Same as array(0 => 'bar')

// Will contain array('foo', 'bar');
$combined = array_merge($arr1, $arr2);

如果数组中的元素使用不同的键,则+运算符会更合适。

$arr1 = array('one' => 'foo');
$arr2 = array('two' => 'bar');

// Will contain array('one' => 'foo', 'two' => 'bar');
$combined = $arr1 + $arr2;

编辑:添加了一个代码片段以澄清


你可以使用运营商。 $ array3 = $ array1。$ array2;



试试array_merge。

$array1 = array('Item 1');

$array2 = array('Item 2');

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

我认为它是因为你没有给任何一个键赋值,所以它们都有0的键,并且+没有重新索引,所以它试图重写它。


这确实是一个关键的冲突。 连接数组时,不会覆盖重复的键。

相反,你必须使用array_merge()

$array = array_merge(array('Item 1'), array('Item 2'));

$array = array('Item 1');

array_push($array,'Item 2');

要么

$array[] = 'Item 2';




concatenation