John Davidson

php - Sort multidimensional array with array_multisort

0 comments
Message:


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 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us