Сортировать числовой массив строк в php
У меня есть php-массив вроде:
myarr[1] = "1",
myarr[2] = "1.233",
myarr[3] = "0",
myarr[4] = "2.5"
значения фактически являются строками, но я хочу, чтобы этот массив сортировался численно, также учитывая значения float и поддерживая ассоциацию индексов.
Пожалуйста, помогите мне.
Благодаря
Ответы
Ответ 1
Вы можете использовать обычную функцию sort
. Второй параметр указывает, как вы хотите его сортировать. Выберите SORT_NUMERIC
.
Пример:
sort($myarr, SORT_NUMERIC);
print_r($myarr);
печатает
Array
(
[0] => 0
[1] => 1
[2] => 1.233
[3] => 2.5
)
Обновить. Для сохранения пар ключ-значение используйте asort
( принимает те же аргументы), пример output:
Array
(
[3] => 0
[1] => 1
[2] => 1.233
[4] => 2.5
)
Ответ 2
Используйте natsort()
$myarr[1] = "1";
$myarr[2] = "1.233";
$myarr[3] = "0";
$myarr[4] = "2.5";
natsort($myarr);
print_r($myarr);
Вывод:
Array ( [2] => 0 [0] => 1 [1] => 1.233 [3] => 2.5 )
Ответ 3
Используйте функцию php usort, а в вашей функции обратного вызова конвертируйте ваши строки в float для их сравнения.
Ответ 4
Вы можете преобразовать свои строки в реальные числа (поплавки) и отсортировать их впоследствии:
foreach ($yourArray as $key => $value) {
$yourArray[$key] = floatval($value);
}
sort($yourArray, SORT_NUMERIC);