自版本PHP> 5.4,' +'不再可以用来组合2个数字键阵列。任何替代组合2数字键阵列而不更改键?例如
myarray1 = [0 => '-'];
myarray2 = [8 => 'CUACA BURUK' ,
3 => 'JALAN SESAK' ,
2 => 'KEMALANGAN' ,
7 => 'KENDERAAN ROSAK' ,
6 => 'KURSUS/BENGKEL/SEMINAR' ,
9 => 'LAIN-LAIN' ,
4 => 'LAWATAN TAPAK/KERJA LUAR' ,
5 => 'MESYUARAT',
];
我想创建一个组合框,第二个数组是我从数据库中获取的数组,并希望为用户提供额外的空白选项。我想在合并2数组时保留键和元素。如果我使用array_merge,它将更改密钥。
答案 0 :(得分:3)
由于你只想在数组中添加一个元素,我建议从数据库中填充一个数组,然后使用元素赋值来创建 - 元素,如下所示:
$options = [ /* Values from database */ ];
$options[0] = '-';
答案 1 :(得分:2)
我不确定为什么这么想。 $myarray1 + $myarray2
始终是PHP中的联合。这种行为从未改变过。然而,工会和array_merge
做了两件完全不同的事情。 $myarray1 + $myarray2
会向$myarray1
中$myarra2
的{{1}}添加元素,$myarray1
中的密钥尚不存在。 array_merge($myarray1, $myarray2)
会将所有元素合并在一起如果键是数字并覆盖字符串键。
所以在上面的例子中......
<?php
$myarray1 = [0 => '-'];
$myarray2 = [
8 => 'CUACA BURUK',
3 => 'JALAN SESAK',
2 => 'KEMALANGAN',
7 => 'KENDERAAN ROSAK',
6 => 'KURSUS/BENGKEL/SEMINAR',
9 => 'LAIN-LAIN',
4 => 'LAWATAN TAPAK/KERJA LUAR',
5 => 'MESYUARAT'
];
$newArray = $myarray1 + $myarray2;
var_dump($newArray);
你得到......
array(9) {
[0]=>
string(1) "-"
[8]=>
string(11) "CUACA BURUK"
[3]=>
string(11) "JALAN SESAK"
[2]=>
string(10) "KEMALANGAN"
[7]=>
string(15) "KENDERAAN ROSAK"
[6]=>
string(22) "KURSUS/BENGKEL/SEMINAR"
[9]=>
string(9) "LAIN-LAIN"
[4]=>
string(24) "LAWATAN TAPAK/KERJA LUAR"
[5]=>
string(9) "MESYUARAT"
}
来自PHP 4.3.0 to PHP 7.0.0的所有内容(使用3v4l.org测试)。