08/01/2016 - PHP
Varsayalım ki elinizde sıralaması bozuk bir multidimensional array var ve de siz bunu, öncelik sırasına göre iki ayrı key veya value ile sıralamak istiyorsunuz. Aşağıdaki örnek işte tam bunu yapar.
$array = [
'Z' => [
'primary' => true,
'age' => 55
],
'C' => [
'primary' => false,
'age' => 60
],
'K' => [
'primary' => true,
'age' => 60
],
'S' => [
'primary' => false,
'age' => 40
],
'F' => [
'primary' => true,
'age' => 60
],
'A' => [
'primary' => true,
'age' => 30
]
];
$aim = [
'F' => [
'primary' => true,
'age' => 60
],
'K' => [
'primary' => true,
'age' => 60
],
'Z' => [
'primary' => true,
'age' => 55
],
'A' => [
'primary' => true,
'age' => 30
],
'C' => [
'primary' => false,
'age' => 60
],
'S' => [
'primary' => false,
'age' => 40
]
];
uasort($array, function($a, $b) {
if ($b['primary'] === $a['primary']) {
return $b['age'] > $a['age'];
}
return strcmp($b['primary'], $a['primary']);
});
print_r($array);
(
[F] => Array
(
[primary] => 1
[age] => 60
)
[K] => Array
(
[primary] => 1
[age] => 60
)
[Z] => Array
(
[primary] => 1
[age] => 55
)
[A] => Array
(
[primary] => 1
[age] => 30
)
[C] => Array
(
[primary] =>
[age] => 60
)
[S] => Array
(
[primary] =>
[age] => 40
)
)