簡體   English   中英

我在php array_reverse()函數中得到了奇怪的輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM