<?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);
- Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.29, 8.2.0 - 8.2.23, 8.3.0 - 8.3.11
- array (
0 =>
array (
'cat_id' => 15,
'parent_id' => 3,
'cat_url_title' => '1-a-40m',
),
1 =>
array (
'cat_id' => 16,
'parent_id' => 3,
'cat_url_title' => '2-a-55m',
),
2 =>
array (
'cat_id' => 12,
'parent_id' => 2,
'cat_url_title' => '12-a-16m',
),
3 =>
array (
'cat_id' => 16,
'parent_id' => 2,
'cat_url_title' => '16-a-18m',
),
4 =>
array (
'cat_id' => 13,
'parent_id' => 2,
'cat_url_title' => '16-a-20m',
),
5 =>
array (
'cat_id' => 13,
'parent_id' => 2,
'cat_url_title' => '16-a-20n',
),
6 =>
array (
'cat_id' => 13,
'parent_id' => 2,
'cat_url_title' => '16-b-1m',
),
7 =>
array (
'cat_id' => 14,
'parent_id' => 2,
'cat_url_title' => '20-a-43m',
),
)
preferences:
77.38 ms | 409 KiB | 5 Q