Сортировка массива по части строки

232
27 февраля 2018, 06:37

Здравствуйте. Подскажите такой вопрос

Необходимо отсортировать массив по части строки элемента массива Исходный

    Array
    (
    [0] => 8452-2880FA17-026_2171.jpg
    [1] => 8452-2880FA17-026_21712.jpg
    [2] => 8452-2880FA17-417_2167.jpg
    [3] => 8452-2880FA17-417_2168.jpg
    [4] => 8452-2880FA17-417_2169.jpg
    [5] => 8452-2880FA17-417_2170.jpg
    )

отсортированный по части строки

Array
    (
    [0] => 2167.jpg
    [1] => 2168.jpg
    [2] => 2169.jpg
    [3] => 2170.jpg
    [4] => 2171.jpg
    [5] => 21712.jpg
    )

Как исходный массив отсортировать как по части строки?

Answer 1

Можно временно модифицировать исходный массив - перезаписать его ключи на значения, по которым надо произвести сортировку. Далее - отсортировать по ключам, и перезаписать исходный массив, отбрасывая временные ключи (привести структуру массива в исходный вид):

$array = array(
    '8452-2880FA17-026_2171.jpg',
    '8452-2880FA17-026_21712.jpg',
    '8452-2880FA17-417_2167.jpg',
    '8452-2880FA17-417_2168.jpg',
    '8452-2880FA17-417_2169.jpg',
    '8452-2880FA17-417_2170.jpg'
);
array_map(function($item) use(&$arr){
    $k = preg_replace('~[^_]+_(\d+)\.\w+$~', '$1', $item);
    $arr[$k] = $item;
}, $array);
ksort($arr);
$array = array_values($arr);
var_dump($array);

Результат:

array (size=6)
  0 => string '8452-2880FA17-417_2167.jpg' (length=26)
  1 => string '8452-2880FA17-417_2168.jpg' (length=26)
  2 => string '8452-2880FA17-417_2169.jpg' (length=26)
  3 => string '8452-2880FA17-417_2170.jpg' (length=26)
  4 => string '8452-2880FA17-026_2171.jpg' (length=26)
  5 => string '8452-2880FA17-026_21712.jpg' (length=27)
READ ALSO
Загрузка файла с расширением .php

Загрузка файла с расширением .php

Как сделать, файл indexphp (к примеру), качался в PHP скрипт по PHP коду? Например

216
Схема подключения к серверу

Схема подключения к серверу

Добрый день! подскажите пожалуйста как лучше всего получать данные с сервера? допустим с тутусейчас источник банит при частом запросе? но есть...

229
Некорректно работает форма

Некорректно работает форма

Хочу, чтобы после нажатия на кнопку появлялось простое сообщение, но оно почему-то сразу выводится до нажатия кнопкиВ чем я ошибку допустил?

174
Twitter api. Отслеживание действий юзера

Twitter api. Отслеживание действий юзера

Изучаю api твиттера и столкнулся с одной сложной задачейНужно отследить, сделал ли пользователь ретвит, либо лайк, либо прокомментировал твит

166