Как отсортировать массив строк по длине и сохранить их ключи в PHP?

Есть массив строк;

$arr=array('longstring','string','thelongeststring');

Итак, ключи:

0=>'longstring'
1=>'string'
2=>'thelongeststring'

Я хочу отсортировать его по длине строк, от самой длинной до самой короткой, но без изменения их ключей;

$arrSorted=array(**2**=>'thelongeststring', **0**=>'longstring', **1**=>'string');

Я работаю с PHP с 2-х дней, так что я уже знаю, что может быть полезно в этом случае:

...
usort($twoDim, 'sorting');
}

function sorting($a, $b) {
return strlen($b) - strlen($a);
}

Это дает мне массив со строкой, отсортированной по длине, но с новыми ключами. Другое дело asort который сортирует массив по алфавиту и поддерживает его ключи. Но я понятия не имею, как сделать эти две вещи одновременно …

Пожалуйста помоги!

3

Решение

использование uasort:

uasort — сортирует массив с помощью пользовательской функции сравнения и поддерживает связь с индексами.

usort не поддерживает индексные ассоциации.

Используйте это так:

function sortByLength ($a, $b) {
return strlen($b) - strlen($a);
}

$arr = ['longstring', 'string', 'thelongeststring'];

uasort($arr, 'sortByLength');

print_r($arr);

eval.in demo

Это возвращает:

Array
(
[2] => thelongeststring
[0] => longstring
[1] => string
)
3

Другие решения

…как сделать эти две вещи одновременно

Ты почти там.

usort + asort знак равно uasort.

4

По вопросам рекламы [email protected]