我有一個單行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. 改變陣列的順序來匹配主陣列
- 2. PHP多維陣列(usort)
- 3. 難陣列排序順序
- 4. 改變陣列
- 5. 改變陣列
- 6. 陣列顯示順序
- 7. 顛倒陣列順序
- 8. 更改列順序?
- 9. 更改列順序
- 10. 更改列順序
- 11. 根據單獨陣列的順序對陣列進行排序
- 12. 更改列的順序
- 13. 使用usort在PHP中不工作排序多維陣列
- 14. 改變陣列的載體
- 15. 改變陣列中的Ruby
- 16. php usort()與json排序的優先順序
- 17. 無法改變Tab順序
- 18. R:只改變一些列的data.table中的列順序
- 19. PHP陣列中順序排序
- 20. usort()排列
- 21. 在設計時改變財產序列化的順序在.Net
- 22. 如何改變重採樣的蟒蛇時間序列順序
- 23. 根據另一陣列的順序
- 24. 觀察陣列元素的順序
- 25. 按順序更新矩陣RDD的列
- 26. WordPress的:陣列OUTPUT按順序
- 27. 反轉元素的順序在陣列
- 28. IBOutletCollection IB中的NSMutable陣列順序
- 29. 在切換導航菜單中改變導航欄標題列表元素的順序而不改變順序
- 30. linq更改列順序
顯示一些代碼 - –
與uasort試了一下爲好,還是改變了順序 – Asaf
http://pastebin.com/JPvvxJaC - 改變uasort到usort,它仍然會改變順序 – Asaf