我有一個單行usort函數:返回0
我試圖用它stdClass的對象的數組,它改變
它們的順序,這怎麼可能?usort改變陣列的順序
4
A
回答
8
您認爲該屬性稱爲stability:一個穩定排序算法不會改變相等元素的順序。
php的排序功能是不是穩定(因爲非穩定排序可能會稍微快一點)。從documentation of usort
:
如果兩個成員比較平等,他們的數組排序,以便爲 不確定的。
如果你想要一個穩定的排序算法,你必須implement it yourself。
1
這是因爲這個功能的意思是「我真的不在乎它們是如何排序的,它們與我相等」。有了這個簡單的示例中,我收到相反的數組:
function sortaaa($a,$b) {return 0;}
$array = array(1,2,3,4,5);
usort($array,"sortaaa");
var_dump($array);
//prints array(5) { [0]=> int(5) [1]=> int(4) [2]=> int(3) [3]=> int(2) [4]=> int(1) }
所以它看起來像PHP中的循環功能usort
以相反的順序排列。所以,請注意usort
manual指出
如果兩個成員比較平等,他們的數組排序才能是不確定的。
相關問題
- 1. usort陣列 - 按字母順序列出歌曲
- 2. 改變陣列的順序來匹配主陣列
- 3. PHP排序mutlidim陣列usort不工作
- 4. 更改陣列順序(如列)
- 5. PHP多維陣列(usort)
- 6. Matlab,隨機改變單元格陣列中的順序
- 7. 訂購兩列,改變排序順序
- 8. 使用usort排列數組陣列PHP
- 9. 難陣列排序順序
- 10. PHP usort兩個陣列:首先由值,第二通過鍵基於第一陣列順序
- 11. 改變陣列
- 12. 改變陣列
- 13. 改變陣列
- 14. 根據長陣的順序改變字符串數組的順序
- 15. 改變JSON的順序值
- 16. 排序利用usort()和sort()日期的陣列功能
- 17. 陣列顯示順序
- 18. 顛倒陣列順序
- 19. 陣列顯示順序
- 20. 更改列順序
- 21. 更改列順序
- 22. 更改列順序?
- 23. 更改列順序
- 24. 排序陣列中的特定順序
- 25. 根據單獨陣列的順序對陣列進行排序
- 26. 更改列的順序
- 27. 使用usort自定義排序php陣列
- 28. 排序與usort(PHP)在陣列2字段ASC
- 29. 使用usort在PHP中不工作排序多維陣列
- 30. 改變陣列中的Ruby
顯示一些代碼 - –
與uasort試了一下爲好,還是改變了順序 – Asaf
http://pastebin.com/JPvvxJaC - 改變uasort到usort,它仍然會改變順序 – Asaf