2016-05-23 45 views
1

我試圖創建關聯數組下拉菜單中開始:在PHP號碼建立關聯數組 - 合併3個陣列

`None` => `None` 

後的數字從0124格式 - > 01,02,03 ... ... 10,11 24 最後加:

`25+` => `25+` 

鍵和下拉式的值應該是相同的。

我試過如下:

$format_numbers1 = array(); 
$format_numbers1['None'] = 'None'; 
for($i=1;$i<=9;$i++) { 
$numbers[] = $i; 
} 

foreach($numbers as $number) { 
$n = str_pad($number, 2, '0', STR_PAD_LEFT); 
$format_numbers2[$n] = str_pad($number, 2, '0', STR_PAD_LEFT); 
} 
for($j=10;$j<=24;$j++) { 
$format_numbers3[$j] = $j; 
} 
$format_numbers_new = array_merge($format_numbers1, $format_numbers2); 
$format_numbers = array_merge($format_numbers_new, $format_numbers3); 
$format_numbers['25+'] = '25+'; 

但我得到這樣的輸出:

array(26) { ["None"]=> string(4) "None" ["01"]=> string(2) "01" ["02"]=> string(2) "02" ["03"]=> string(2) "03" ["04"]=> string(2) "04" ["05"]=> string(2) "05" ["06"]=> string(2) "06" ["07"]=> string(2) "07" ["08"]=> string(2) "08" ["09"]=> string(2) "09" [0]=> int(10) [1]=> int(11) [2]=> int(12) [3]=> int(13) [4]=> int(14) [5]=> int(15) [6]=> int(16) [7]=> int(17) [8]=> int(18) [9]=> int(19) [10]=> int(20) [11]=> int(21) [12]=> int(22) [13]=> int(23) [14]=> int(24) ["25+"]=> string(3) "25+" } 

下拉鍵從10到24是不正確的。

回答

1

爲10..24的範圍內你使用整數作爲你的鑰匙,而不是字符串:

for ($j = 10; $j <=24; $j++) { 
    $format_numbers3["$j"] = "$j"; 
    # here ----------^--^----^--^ 
} 

但坦率地說,你是過於複雜的事情。 str_pad可以處理它不需要填充值,這樣你就可以處理所有的數字1..24在一個循環:

$format_numbers = array(); 
$format_numbers['None'] = 'None'; 
for ($i = 1 ;$i <= 24; $i++) { 
    $n = str_pad($i, 2, '0', STR_PAD_LEFT); 
    $format_numbers2[$n] = $n; 
} 
$format_numbers['25+'] = '25+'; 
+0

謝謝大家的幫助! –

2

對方回答指出,使用的是整數,不是字符串,所以你失去了0字頭,所以這裏是整個陣列更短代碼:

$numbers['None'] = 'None'; 
for($i=1;$i<=24;$i++) { 
    $n = str_pad($i, 2, '0', STR_PAD_LEFT); 
    $numbers[$n] = $n; 
} 
$numbers['25+'] = '25+'; 
1

不要使用array_merge,但+操作:

$format_numbers = $format_numbers1 + $format_numbers2 + $format_numbers3; 

Documentat array_merge說:

帶有數字鍵的輸入數組中的值將使用從結果數組中的零開始的遞增鍵重新編號。

這是+操作員不能做的事情。