簡體   English   中英

PHP中是否保證關聯數組的順序?

[英]Is the order of an associative array guaranteed in PHP?

當我在php中的associatve數組上執行foreach循環時,執行它的順序是它的定義順序。

例如:

$arr = array("z" => "z", "a" => "a", "b" => "b");

foreach($arr as $key => val)
  print("$key: $val\n");

輸出:

z: z
a: a
b: b

$arr = array("a" => "a", "b" => "b", "z" => "z");

輸出:

a: a
b: b
z: z

那么我的問題是:這種行為是在規范級別定義的嗎? 我可以合理地確定在將來的PHP版本中不會更改此行為嗎?

PHP手冊

PHP中的數組實際上是一個有序映射。 映射是將值與鍵關聯的類型。 此類型針對多種不同用途進行了優化; 它可以被視為數組,列表(向量),哈希表(地圖的實現),字典,集合,堆棧,隊列,甚至更多。

數組是有序的。 可以使用各種排序功能更改訂單。

因此,您可以確定(至少目前)訂單將得到維護。 如果這種行為發生變化,我會非常驚訝,因為它是明確說明的,因此會有大量依賴它的代碼。

因為數組總是有序的,並且迭代數組的最簡單和最快的方法就是從第一個元素到最后一個元素(所以沒有充分的理由來改變foreach()的行為),你可以合理地確定這種行為不會改變。

您的問題似乎來自於Perl中的編程,其中“數組”不能保證按照您創建它們的順序。 但是在PHP中,它總是被命令並且永遠都是,否則很多代碼都會破壞。

這永遠不會改變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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