usort и uasort использовать функцию сравнения, которая медленна, потому что она должна вычисляться каждый раз, когда требуется сравнение между элементами массива. Другие языки, такие как Python, позволяют сортировать массив с помощью ключевой функции, которая оценивается только один раз для каждого элемента массива. Каков наилучший способ сделать это в PHP?Лучший способ сортировки массива в PHP с использованием ключевой функции?
ответ
function sort_with_keyfunc($array, $keyfunc) { $keys = array_map($keyfunc, $array); // get the keys for each item array_multisort($keys, $array); // sort $array according to the sorted keys return $array; }
Это также поддерживает пары ключей => в ассоциативных массивах.
Uh whaaaaat? Вы сразу отвечаете на свои вопросы - менее чем за две минуты? – Rudu
Его хороший быстрый способ получить эти значки :) –
Этот парень также [блог об этом вопросе на своем сайте] (http://www.nathanieltroutman.net/content/sorting-arrays-php-using-key-function). Он имеет гораздо больше деталей и результатов тестов. – shamittomar
Вам нужно быстрее? Используйте Quicksort:
<?php
function quicksort($arr, $l = 0 , $r = NULL) {
// when the call is recursive we need to change
// the array passed to the function earlier
static $list = array();
if($r == NULL)
$list = $arr;
if($r == NULL)
$r = count($list)-1;//last element of the array
$i = $l;
$j = $r;
$tmp = $list[(int)(($l+$r)/2)];
// partion the array in two parts.
// left from $tmp are with smaller values,
// right from $tmp are with bigger ones
do {
while($list[$i] < $tmp)
$i++;
while($tmp < $list[$j])
$j--;
// swap elements from the two sides
if($i <= $j) {
$w = $list[$i];
$list[$i] = $list[$j];
$list[$j] = $w;
$i++;
$j--;
}
}while($i <= $j);
// devide left side if it is longer the 1 element
if($l < $j)
quicksort(NULL, $l, $j);
// the same with the right side
if($i < $r)
quicksort(NULL, $i, $r);
// when all partitions have one element
// the array is sorted
return $list;
}
?>
ee gads man, используя короткие теги, подобные этому !!! EEEK !! (примечание стороны, теперь я чувствую себя нарушенным) –
-1 [PHP 'sort' function] (http://php.net/sort) уже использует Quicksort:« Как и большинство функций сортировки PHP, 'sort()' использует реализацию из Quicksort. " – Gumbo
@Gumbo: Хорошая точка. Я этого никогда не замечал. :) – shamittomar
- 1. Лучший способ сортировки массива данных в PHP
- 2. Лучший способ сортировки массива
- 3. Лучший способ сортировки списка с индексом массива
- 4. Лучший способ сортировки массива с необычным значением
- 5. Лучший способ сортировки многомерных массивов в PHP
- 6. Лучший способ сортировки массивов в PHP
- 7. Python сортировки() ключевой функции странность
- 8. Лучший способ группировки и сортировки массива объектов
- 9. Сортировка массива NSDates с использованием функции сортировки
- 10. Лучший способ сортировки данных
- 11. Лучший способ сортировки NSMutableArray?
- 12. Лучший способ сортировки GetFiles
- 13. Лучший способ сортировки набора?
- 14. Лучший способ преобразования массива PHP в javascript
- 15. Лучший способ передачи большого массива в PHP
- 16. Лучший способ сортировки массива в зависимости от подзначение
- 17. Лучший способ десериализации массива Json в php?
- 18. лучший способ манипулировать ключами массива в PHP
- 19. простой способ сортировки массива PHP по свойству
- 20. Наиболее эффективный способ сортировки многомерного массива (php)
- 21. Лучший способ сортировки для этого?
- 22. Ищете лучший способ сортировки данных
- 23. Лучший способ сортировки узла дерева?
- 24. Сортировка многомерного массива в JavaScript с использованием пользовательской функции сортировки
- 25. Лучший способ для пользовательской сортировки в Java?
- 26. Лучший способ сортировки Gridview с помощью xmldatasource?
- 27. PHP: лучший способ повторить два параллельных массива?
- 28. Лучший способ поиска массива?
- 29. Лучший способ очистить значения массива PHP
- 30. Лучший способ сортировки многомерный массив по ключам в PHP
Этот парень также [блог об этом вопросе на своем сайте] (http://www.nathanieltroutman.net/content/sorting-arrays-php-using-key-function). Он имеет гораздо больше деталей и результатов тестов. – shamittomar