我發現了怪異輸出我發現了怪異輸出在PHP array_reverse()函數
<?php
$a = array('1000'=>1,2,3,4,'1001'=>5);
var_dump(array_reverse($a));
?>
和我得到這樣的輸出:
array (size=4)
0 => int 4
1 => int 3
2 => int 5
3 => int 1
值2是失蹤。任何人都可以解釋代碼?
我發現了怪異輸出我發現了怪異輸出在PHP array_reverse()函數
<?php
$a = array('1000'=>1,2,3,4,'1001'=>5);
var_dump(array_reverse($a));
?>
和我得到這樣的輸出:
array (size=4)
0 => int 4
1 => int 3
2 => int 5
3 => int 1
值2是失蹤。任何人都可以解釋代碼?
$a = array('1000'=>1,2,3,4,'1001'=>5);
裝置
create key entry 1000 with value 1
create key entry 1000+1 with value 2
create key entry 1000+2 with value 3
create key entry 1000+3 with value 4
然後
create key entry 1001 with value 5
已經存在(具有值2)
,所以是覆蓋用新值
您已經有與你的「問題」原始數組。如果您print_r($a);
您將看到:
Array
(
[1000] => 1
[1001] => 5
[1002] => 3
[1003] => 4
)
而且你可以看到你缺少一個值,因爲你覆蓋它:
Index 1000 set value 1.
Index 1001 set value 2.
Index 1002 set value 3.
Index 1003 set value 4.
Index 1001 set value 5. <--- overwritten index 1001
謝謝,現在我明白了 – Nambi
您的代碼工作正確,你開始與指數第一個值(1000 )告訴PHP從這個設置下鍵例如,如果我們打印您陣列將是這樣的:
Array
(
[1000] => 1
[1001] => 5
[1002] => 3
[1003] => 4
)
和數組反向產生這樣的:
Array
(
[0] => 4
[1] => 3
[2] => 5
[3] => 1
)
保持與第二參數的按鍵:
print_r(array_reverse($a,true));
Array
(
[1003] => 4
[1002] => 3
[1001] => 5
[1000] => 1
)
當然值2中缺失。看這個
$a = array('1000'=>1,2,3,4,'1001'=>5);
作爲下一個值值1之後不具有鍵,所以默認爲值1的下一個鍵所以應該是這樣的 陣列(「1000」 => 1, '1001'=> 2,'1002'=> 3,'1003'=> 4) 最後一個值是5,它已經有了鍵值1001.所以它會覆蓋之前的值。結果值2被覆蓋值5
首先看看你實際創建的數組 –