如果我添加使用不同的密鑰項目關聯數組,並添加順序保守?我如何訪問給定元素的「上一個」和「下一個」元素?
6
A
回答
12
是的,PHP數組有一個隱式順序。使用reset
,next
,prev
和current
- 或只是一個foreach
loop - 檢查它。
9
是的,它確實保存了訂單。你可以把php數組想象成ordered hash maps。
您可以將元素視爲按「索引創建時間」排序。例如
$a = array();
$a['x'] = 1;
$a['y'] = 1;
var_dump($a); // x, y
$a = array();
$a['x'] = 1;
$a['y'] = 1;
$a['x'] = 2;
var_dump($a); // still x, y even though we changed the value associated with the x index.
$a = array();
$a['x'] = 1;
$a['y'] = 1;
unset($a['x']);
$a['x'] = 1;
var_dump($a); // y, x now! we deleted the 'x' index, so its position was discarded, and then recreated
總之,如果你加入其中的關鍵犯規當前存在的數組中的一個條目,該條目的位置將是列表的末尾。如果您正在更新現有密鑰的條目,則位置不變。
foreach使用上面演示的自然順序在數組上循環。如果你喜歡,你也可以使用next()current()prev()reset()和朋友,儘管自從foreach被引入語言以後,它們很少被使用。
另外,print_r()和var_dump()也使用自然數組順序輸出結果。
如果你對java很熟悉,LinkedHashMap是最相似的數據結構。
相關問題
- 1. 在PHP中保證關聯數組的順序嗎?
- 2. h5py中的組是否保存其成員的添加順序?
- 3. 保存活動記錄,保存關聯對象的順序是什麼?
- 4. JSON數組反序列化 - 是否總是保存元素的順序?
- 5. Seq.groupBy是否在組內保持順序?
- 6. 從YAML文件加載的Ruby數組是否保證其順序保存?
- 7. 數組或列表中的項目是否保持其順序?
- 8. 關聯數組:將其保存爲數組還是字符串?
- 9. 保存順序的Ruby字符串/數組組合保留順序
- 10. 使用NSKeyedArchiver保存關聯數組
- 11. 是否保證在PHP中按照數組順序迭代foreach?
- 12. 當保存主對象時,ActiveRecord是否保存了belongs_to關聯?
- 13. 保留數組的順序
- 14. 檢查關聯數組中是否存在鍵
- 15. JavaScript數組的順序是否有保證?
- 16. PHP如何跟蹤關聯數組中的順序?
- 17. 分組關聯數組鍵 - 在相同的順序
- 18. Rails ActiveRecord - 如何設置關聯保存順序
- 19. 按照相反的順序排序關聯數組索引
- 20. Java是否支持關聯數組?
- 21. 是否保存了JSON列表中元素的順序?
- 22. 從plist讀取數組時,是否保證NSArray/NSMutableArray順序?
- 23. LinkedHashSet構造函數是否保存順序
- 24. 如何將php關聯數組排序爲特定順序?
- 25. 使用自定義順序對關聯數組排序
- 26. 內存中的關聯數組查找
- 27. 是否在MongoDB中保存了插入順序?
- 28. 是否在Windows 7中保存兌現順序?
- 29. 消息順序是否保存在MQTT消息中?
- 30. 是否保證KeyListeners的調用順序?