3v4l.org

run code in 300+ PHP versions simultaneously
<?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