Здравствуйте. Подскажите такой вопрос
Необходимо отсортировать массив по части строки элемента массива Исходный
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
)
Как исходный массив отсортировать как по части строки?
Можно временно модифицировать исходный массив - перезаписать его ключи на значения, по которым надо произвести сортировку. Далее - отсортировать по ключам, и перезаписать исходный массив, отбрасывая временные ключи (привести структуру массива в исходный вид):
$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)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости