I have an array:
$arr = [
[
"t1" => ["sum" => 3],
"t2" => ["sum" => 8],
"t3" => ["sum" => 3],
"t4" => ["sum" => 1],
"t5" => ["sum" => 8]
],
[
"t1" => ["sum" => 6],
"t2" => ["sum" => 2],
"t3" => ["sum" => 4],
"t4" => ["sum" => 4],
"t5" => ["sum" => 1]
]
];
How to sort this array using array_multisort to get an array like this?
Array
(
[0] => Array
(
[t2] => 8
[t5] => 8
[t1] => 3
[t3] => 3
[t4] => 1
)
[1] => Array
(
[t2] => 2
[t5] => 1
[t1] => 6
[t3] => 4
[t4] => 4
)
)
First we sort by the first sub array (index = 0), then by the second sub array (index = 1).
My code:
$arr = [
[
"t1" => ["sum" => 3],
"t2" => ["sum" => 8],
"t3" => ["sum" => 3],
"t4" => ["sum" => 1],
"t5" => ["sum" => 8]
],
[
"t1" => ["sum" => 6],
"t2" => ["sum" => 2],
"t3" => ["sum" => 4],
"t4" => ["sum" => 4],
"t5" => ["sum" => 1]
]
];
array_multisort(array_column($arr[0], "sum"), SORT_DESC, SORT_NUMERIC,
array_column($arr[1], "sum"), SORT_NUMERIC, SORT_DESC);
print_r($arr);
But the result is wrong:
Array
(
[0] => Array
(
[t1] => Array
(
[sum] => 3
)
[t2] => Array
(
[sum] => 8
)
[t3] => Array
(
[sum] => 3
)
[t4] => Array
(
[sum] => 1
)
[t5] => Array
(
[sum] => 8
)
)
[1] => Array
(
[t1] => Array
(
[sum] => 6
)
[t2] => Array
(
[sum] => 2
)
[t3] => Array
(
[sum] => 4
)
[t4] => Array
(
[sum] => 4
)
[t5] => Array
(
[sum] => 1
)
)
)
My Answer:
'name' => 'John', 'age' => 30, 'city' => 'New York'], ['name' => 'Alice', 'age' => 25, 'city' => 'Los Angeles'], ['name' => 'Bob', 'age' => 35, 'city' => 'Chicago'] ];To sort this array by the 'age' key in ascending order, you can use the array_multisort function like this:array_multisort(array_column($arr, 'age'), SORT_ASC, $arr);This will sort the array $arr by the 'age' key in ascending order.
Rate this post
4 of 5 based on 7050 votesComments