[英]i'm getting the weird output in php array_reverse() functions
我得到奇怪的輸出
<?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
您的代碼工作正確,您從索引(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覆蓋
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.