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