сортировка многомерного массива с использованием array_multisort

У меня есть этот многомерный массив

Array
(
[0] => Array
(
[at] => 0
[bt] => 9
)

[1] => Array
(
[at] => 3
[bt] => 5
)

[2] => Array
(
[at] => 0
[bt] => 3
)

)

Я хочу отсортировать его по ключу «в», поэтому я попробовал этот код

//$process = array() given above

$p = array();

foreach ($process as $key => $row) {
$p[$key] = $row['at'];
}

array_multisort($p, SORT_NUMERIC, SORT_ASC, $process);

и я получаю этот результат

Array
(
[0] => Array
(
[at] => 0
[bt] => 3
)

[1] => Array
(
[at] => 0
[bt] => 9
)

[2] => Array
(
[at] => 3
[bt] => 5
)

)

Это сортирует «в», но это также сортирует «bt».

Как я могу отсортировать этот массив только по ключу «at»?

Как это:

Array
(
[0] => Array
(
[at] => 0
[bt] => 9
)

[1] => Array
(
[at] => 0
[bt] => 3
)

[2] => Array
(
[at] => 3
[bt] => 5
)

)

Спасибо.

РЕДАКТИРОВАТЬ:

Что касается ответа ниже, Матье Lescaudron

Когда у меня есть только это в моем массиве,

Array
(
[0] => Array
(
[at] => 0
[bt] => 9
)

[1] => Array
(
[at] => 0
[bt] => 3
)
)

Как я могу предотвратить его сортировку, поскольку я хочу отсортировать его только по ключу «at». И сортировать там нечего, так как они оба равны 0.

1

Решение

использование usort :

$array = array(
array('at' => 0, 'bt' => 9),
array('at' => 3, 'bt' => 5),
array('at' => 0, 'bt' => 3)
);

usort($array, function($a, $b) {
return $a['at'] - $b['at'];
});

var_dump($array);

Попробуйте это на Php онлайн

2

Другие решения

Других решений пока нет …