Сортировка массива по значению в словах - PullRequest
0 голосов
/ 21 мая 2019

Я хочу отсортировать значения в порядке возрастания.

Я пробовал ksort и другие примеры сортировки.

Array
(
    [0] => stdClass Object
        (
            [tenure] => 1 year to less than 2 years
        )

    [1] => stdClass Object
        (
            [tenure] => 10 years to less than 15 years
        )

    [2] => stdClass Object
        (
            [tenure] => 15 years or more
        )

    [3] => stdClass Object
        (
            [tenure] => 2 years to less than 5 years
        )

    [4] => stdClass Object
        (
            [tenure] => 5 years to less than 10 years
        )

)

Я хочу отсортировать значения срока действия вышеуказанного массива.

Ответы [ 3 ]

2 голосов
/ 21 мая 2019

Вы можете использовать ядро ​​ array_multisort

array_multisort(array_column($array, 'tenure'),   
SORT_ASC, SORT_NATURAL, $array);

https://3v4l.org/cXNQH.

2 голосов
/ 21 мая 2019

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

usort($array, function ($a, $b) { return (int)$a->tenure - (int)$b->tenure; });
print_r($array);

Вывод:

Array (
  [0] => stdClass Object (
    [tenure] => 1 year to less than 2 years
  )
  [1] => stdClass Object (
    [tenure] => 2 years to less than 5 years
  )
  [2] => stdClass Object (
    [tenure] => 5 years to less than 10 years
  )
  [3] => stdClass Object (
    [tenure] => 10 years to less than 15 years
  )
  [4] => stdClass Object (
    [tenure] => 15 years or more
  )
)

Демонстрация на 3v4l.org

1 голос
/ 21 мая 2019

Вы можете использовать array_walk, ksort, Вы можете изменить object на array, используя

$arr = (array) $object;

после этого попробуйте это

$res=[];
array_walk($arr, function($v, $k) use (&$res){
  $key = substr($v['tenure'], 0, strspn($v['tenure'], "0123456789"));
  $res[$key] = $v;
});
ksort($res);

Рабочая демоверсия

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