<?php
$array = array (
array (
'cat_id' => 14,
'parent_id' => 2,
'cat_url_title' => '20-a-43m'
),
array (
'cat_id' => 13,
'parent_id' => 2,
'cat_url_title' => '16-a-20n'
),
array (
'cat_id' => 15,
'parent_id' => 3,
'cat_url_title' => '1-a-40m'
),
array (
'cat_id' => 13,
'parent_id' => 2,
'cat_url_title' => '16-a-20m'
),
array (
'cat_id' => 16,
'parent_id' => 3,
'cat_url_title' => '2-a-55m'
),
array (
'cat_id' => 13,
'parent_id' => 2,
'cat_url_title' => '16-b-1m'
),
array (
'cat_id' => 16,
'parent_id' => 2,
'cat_url_title' => '16-a-18m'
),
array (
'cat_id' => 12,
'parent_id' => 2,
'cat_url_title' => '12-a-16m'
)
);
// array_multisort(array_column($array, 'cat_url_title'), SORT_NUMERIC, $array);
/* usort($array, function($a, $b) {
return (int)$a['cat_url_title'] <=> (int)$b['cat_url_title'];
}); */
// usort($array, fn($a, $b) => (int)$a['cat_url_title'] <=> (int)$b['cat_url_title']);
usort($array, function($a, $b) {
return (preg_match_all('~[a-z]+|\d+~', $a['cat_url_title'], $out) ? $out[0] : ['','','',''])
<=>
(preg_match_all('~[a-z]+|\d+~', $b['cat_url_title'], $out) ? $out[0] : ['','','','']);
});
var_export($array);
preferences:
14.08 ms | 406 KiB | 5 Q