Этот пример зависит от двух ключей/значений вместо одного, в отличие от многих других примеров, которые я видел в Stack-overflow. Помимо сортировки массива ниже на primary
ключ, я также хотел бы отсортировать его по age
, чтобы я смог достичь ОЖИДАЕМЫЙ РЕЗУЛЬТАТ ниже. Как мне изменить КОД ниже, чтобы достичь этого? ТЕКУЩИЙ РЕЗУЛЬТАТ имеет A-6-6
ключ неуместен, потому что мой код еще не обрабатывает его.Сортировка многомерного массива двумя разными ключами или значением
исходного массива
$myarray = [
'Z-9-0' => [
'primary' => true,
'age' => 55
],
'C-7-1' => [
'primary' => false,
'age' => 60
],
'K-1-9' => [
'primary' => true,
'age' => 60
],
'C-2-1' => [
'primary' => false,
'age' => 40
],
'F-6-6' => [
'primary' => true,
'age' => 60
],
'A-6-6' => [
'primary' => true,
'age' => 30
]
];
ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ
(
[F-6-6] => Array
(
[primary] => 1
[age] => 60
)
[K-1-9] => Array
(
[primary] => 1
[age] => 60
)
[Z-9-0] => Array
(
[primary] => 1
[age] => 55
)
[A-6-6] => Array
(
[primary] => 1
[age] => 30
)
[C-7-1] => Array
(
[primary] =>
[age] => 60
)
[C-2-1] => Array
(
[primary] =>
[age] => 40
)
)
КОД
uasort($myarray, function($a, $b) {
return strcmp($b['primary'], $a['primary']);
});
print_r($org);
ТЕКУЩИЙ РЕЗУЛЬТАТ
Как вы можете видеть, A-6-6
не в нужном месте по сравнению с ожидаемым результатом выше. Таким образом, чем больше age
, тем выше оно должно появиться.
(
[A-6-6] => Array
(
[primary] => 1
[age] => 30
)
[F-6-6] => Array
(
[primary] => 1
[age] => 60
)
[K-1-9] => Array
(
[primary] => 1
[age] => 60
)
[Z-9-0] => Array
(
[primary] => 1
[age] => 55
)
[C-7-1] => Array
(
[primary] =>
[age] => 60
)
[C-2-1] => Array
(
[primary] =>
[age] => 40
)
)
Я не уверен, является ли это соответствует вашему вопросу; однако вы можете быстро взглянуть на это: http://php.net/manual/en/function.uasort.php#114535 –