3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = [ ['woid'=>'17643-2','schedule'=>'ASAP'], ['woid'=>'17643-1','schedule'=>'ASAP'], ['woid'=>'NC324-1','schedule'=>'ASAP'], ['woid'=>'17642-1','schedule'=>'URGENT'], ['woid'=>'NC323-1','schedule'=>'URGENT'], ['woid'=>'17644-1','schedule'=>'JAN'], ]; $order = ['URGENT','JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC','ASAP']; $order = array_flip($order); usort($array, function($a, $b) use ($order) { $aNC = strpos($a['woid'], 'NC') === 0; $bNC = strpos($b['woid'], 'NC') === 0; return ($bNC - $aNC) ?: ($order[$a['schedule']] - $order[$b['schedule']]) ?: strcmp($a['woid'], $b['woid']); }); var_dump($array);

preferences:
31.13 ms | 408 KiB | 5 Q