PHP, сортировка массива в зависимости от его записей (xNUMBERxNUMBERxNUMBER) - PullRequest
0 голосов
/ 10 апреля 2019

В PHP ниже пример массива:

$version = [
    "x3x3x2",
    "x10x11x0",
    "x180x7x1",
    "x10x1x7",
    "x2x0x4",
    "x3x3x1",
]

Каждая запись следует этому шаблону 'xNxNxN' (символ 'x' и число N три раза)

Я хочу отсортировать каждую запись этого массива по номерам, слева направо.Ожидаемый результат:

$version = [
    "x2x0x4",
    "x3x3x1",
    "x3x3x2",
    "x10x1x0",
    "x10x11x7",
    "x180x7x1",
]

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

Существует встроенная функция для сравнения номеров версий . Просто объедините это с usort.

usort($version, 'version_compare');

Результат:

var_dump($version);
array(6) {
  [0]=>
  string(6) "x2x0x4"
  [1]=>
  string(6) "x3x3x1"
  [2]=>
  string(6) "x3x3x2"
  [3]=>
  string(7) "x10x1x7"
  [4]=>
  string(8) "x10x11x0"
  [5]=>
  string(8) "x180x7x1"
}
0 голосов
/ 11 апреля 2019

Простое решение, сохраняя только числа и сортируя его, используя usort

usort($version,function($a,$b){
    $astr = preg_replace("/[^0-9\.]/", '', $a);
    $bstr = preg_replace("/[^0-9\.]/", '', $b);
    return $astr - $bstr;
});
print_r($version);

usort - Сортируйте массив по значениям, используя пользовательскую функцию сравнения.

Демо .

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