<?php
$items = [
['name' => 'Hank'],
['name' => 'Beavis'],
['name' => 'Butthead'],
['name' => 'Cornholio', 'caffine_powered' => true],
];
$sorter = function($a, $b){
if( key_exists('caffine_powered', $a) && key_exists('caffine_powered', $b) ) {
// both exist
return $a['name'] <=> $b['name'];
} else if( ! (key_exists('caffine_powered', $a) || key_exists('caffine_powered', $b)) ) {
// neither exist
return $a['name'] <=> $b['name'];
} else if( key_exists('caffine_powered', $a) ) {
// just a
return -1;
} else {
// just b
return 1;
}
};
usort($items, $sorter);
var_dump($items);
preferences:
60.57 ms | 402 KiB | 5 Q