PHP在不更改其他数组数字键的情况下将元素添加到数组的开头

时间:2015-10-26 02:13:28

标签: php arrays

自版本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,它将更改密钥。

2 个答案:

答案 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测试)。