我有一個15000個元素的數組,每個元素都是4個元素的數組。我想按照4的第二個元素進行排序。最初我將原始數組的鍵作爲第二個元素,然後進行k排序,但不幸的是,第二個元素的一些是重複的,因爲一個鍵不能引用多個元素一些轉型因素。我可以通過第二個元素進行冒泡排序,但是我正在尋找至少按照nlog(n)的順序運行的東西。任何人都可以想到一個好的算法(或者可能是一個我不知道的php函數),它可以通過第二個元素進行排序嗎?謝謝!在PHP中對陣列數組進行排序 - >需要一個好的算法
1
A
回答
3
我想你可以使用usort
並定義cmp_function來使用第二個元素。
0
我不知道usort的內部實現是什麼,但我敢打賭它比bubblesort更好(這可能是快速排序)。
1
正如其他人所指出的,usort或uasort維持數組的鍵是你想要什麼:
<?php
$myArray = array(
'fruits' => array(
array('apples', 'oranges', 'bananas')
),
'vegetables' => array(
array('lettuce', 'carrots', 'peas')
),
'monkeys' => array(
array('Curious George', 'Amy', 'Marcel')
)
);
// PHP 5.3+ example using a closure
uasort($myArray, function(array $a, array $b) {
// Use whatever sorting algorithm you like
return strnatcasecmp($a[1], $b[1]);
});
var_export($myArray);
運行上面會輸出:
array (
'monkeys' =>
array (
0 =>
array (
0 => 'Curious George',
1 => 'Amy',
2 => 'Marcel',
),
),
'vegetables' =>
array (
0 =>
array (
0 => 'lettuce',
1 => 'carrots',
2 => 'peas',
),
),
'fruits' =>
array (
0 =>
array (
0 => 'apples',
1 => 'oranges',
2 => 'bananas',
),
),
)
下面是不使用的例子關閉前PHP 5.3:
sortFunc(array $a, array $b)
{
return strnatcasecmp($a[1], $b[1]);
}
uasort($myArray, 'sortFunc');
相關問題
- 1. PHP - 根據另一個陣列對數組進行排序
- 2. PHP - 使用另一個陣列對數組進行排序
- 3. PHP需要在陣列數組進行排序,並獲得相應的鍵
- 4. 在PHP中對數組進行排序
- 5. 對與另一個陣列相關的數組進行排序
- 6. 如何使用另一個陣列對數組進行排序
- 7. 在PHP中對數組進行排序
- 8. PHP排序多維數組,只能對一列進行排序
- 9. 排序算法最適合對排序數組進行排序
- 10. 在PHP中使用3個暗淡陣列對數組進行排序
- 11. 爲一個已排序陣列的運行時間由選擇排序算法進行排序Vs的時間爲反轉排序的數組進行排序
- 12. 在Erlang中對數組進行排序
- 13. 通過在php中使用日期對陣列的數組進行排序
- 14. 根據另一個陣列的排序對陣列進行排序
- 15. 使用陣列中的變量對數組進行排序
- 16. 用4個選項對數組進行排序的算法
- 17. TypeScript對一個數組進行排序
- 18. 在PHP中對數組進行排序的最佳方法
- 19. 在ruby中對數組進行排序
- 20. PHP:按另一個數組中的字母順序對數組進行排序
- 21. 如何對PHP數組進行排序?
- 22. 需要幫助使用PHP中的時間戳對數組進行排序
- 23. 對PHP中另一個數組值進行排序
- 24. 如何對一個數組排序並使用鍵順序對PHP中的第二個數組進行排序?
- 25. 在Lua中對數組進行排序
- 26. 對複雜PHP數組進行排序
- 27. 需要排序陣列
- 28. PHP - 根據第二給定數組進行排序的陣列
- 29. PHP - 對數組進行排序
- 30. php,如何對數組進行排序?
我想你應該指出,closu res,因此您的解決方案僅在PHP 5.3.0及更高版本中受支持 – 2010-07-13 02:56:06
本示例使用閉包,僅適用於PHP 5.3+ :) – 2010-07-13 03:14:58