PHP позволяет вам писать свои собственные функции сортировки. Я не могу ручаться за эффективность этого решения, но оно будет работать и поддерживается языком напрямую, поэтому мне это нравится.
Для вашего случая вы бы написали что-то вроде этого:
function custom_sort_by_id($a, $b) {
// If the two IDs are the same, no sorting should be done
if ($a['id'] == $b['id']) {
return 0;
}
return ($a['id'] < $b['id']) ? -1 : 1;
}
Затем вы бы вызвали эту функцию следующим образом:
usort($myarray, "custom_sort_by_id");
Итак, если, например, у вас есть следующий начальный массив:
array(3) {
[0]=>
array(2) {
["id"]=> int(3)
["value"]=> int(1)
}
[1]=>
array(2) {
["id"]=> int(2)
["value"]=> int(2)
}
[2]=>
array(2) {
["id"]=> int(1)
["value"]=> int(3)
}
}
Вы получите следующий результат:
array(3) {
[0]=>
array(2) {
["id"]=> int(1)
["value"]=> int(3)
}
[1]=>
array(2) {
["id"]=> int(2)
["value"]=> int(2)
}
[2]=>
array(2) {
["id"]=> int(3)
["value"]=> int(1)
}
}