сортировать массив только численно - PullRequest
2 голосов
/ 20 февраля 2011

Это массив

$array = array(
   'list[P] = 1',
   'list[A] = 1',
   'list[F] = 2',
   'list[B] = 1'
);

Это вывод, который я хочу

[0] => list[P] = 1
[1] => list[A] = 1
[2] => list[B] = 1
[3] => list[F] = 2

уведомление list[P] остается наверху, поскольку оно является первым со значением 1. Таким образом, только числовая сортировка

Ответы [ 2 ]

5 голосов
/ 20 февраля 2011

Попробуйте взглянуть на эту документацию .

Поскольку вы пытаетесь отсортировать определенную часть значения, вам нужно написать свой собственный компаратор и, следовательно, единственный методдоступна функция usort .

Функция uksort принимает два атрибута: массив и имя метода, которые вы хотите использовать для сравнения.Затем вы пишете этот метод, который принимает два значения в качестве параметров и возвращает значение true, равное false, в зависимости от того, больше он или меньше.

Следовательно, вам нужно подстроковать входящие значения, чтобы сравнивать только числа.

Следующий пример кода, кажется, работает

function cmp($a, $b)
{
    $a = substr($a, -1);
    $b = substr($b, -1);
    return $a >= $b;
}

$array = array(
   'list[P] = 1',
   'list[A] = 1',
   'list[F] = 2',
   'list[B] = 1'
);

usort($array, "cmp");

var_dump($array);

Тот же кодтолько с использованием анонимной функции PHP:

$array = array(
   'list[P] = 1',
   'list[A] = 1',
   'list[F] = 2',
   'list[B] = 1'
);

usort(
   $array,
   function ($a, $b){
      $a = substr($a, -1);
      $b = substr($b, -1);
      return $a >= $b;
   }
);

var_dump($array);
0 голосов
/ 18 марта 2011

Если важно сохранить записи или ключи с одинаковыми значениями в том же порядке, в котором они были введены в сортировку в программном обеспечении, которое вы пишете, то вам потребуется алгоритм или метод сортировки, который классифицируется как «стабильный». Это ограничивает типы методов сортировки, доступные программисту в любой одной стране или регионе в его пределах для соответствия соответствующим правилам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...