Подтвердить что ты не робот

Сортировать числовой массив строк в php

У меня есть php-массив вроде:

myarr[1] = "1",
myarr[2] = "1.233",
myarr[3] = "0",
myarr[4] = "2.5"

значения фактически являются строками, но я хочу, чтобы этот массив сортировался численно, также учитывая значения float и поддерживая ассоциацию индексов.

Пожалуйста, помогите мне. Благодаря

4b9b3361

Ответ 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);