Функция usort
, вероятно, является лучшим выбором для этого:
usort($array, function($a, $b) {
if (empty($a['position']) && !empty($b['position'])) {
return 1;
}
else if (!empty($a['position']) && empty($b['position'])) {
return -1;
}
else {
return strcmp($a['name'], $b['name']);
}
});
Анонимные функции были введены в PHP 5.3.0.Если вы используете более раннюю версию, вы можете просто определить обычную функцию:
function cmp($a, $b) {
if (empty($a['position']) && !empty($b['position'])) {
return 1;
}
else if (!empty($a['position']) && empty($b['position'])) {
return -1;
}
else {
return strcmp($a['name'], $b['name']);
}
}
usort($array, 'cmp');