Reputation: 127
I have an array like:
$a = array(
array("fghfg12" => 34),
array("dfgdf23" => 97),
array("wetw13" => 65),
array("rtyr567" => 18)
);
I want to sort this array by its value. That means I want the result like:
$a = array(
array("rtyr567" => 18),
array("fghfg12" => 34),
array("wetw13" => 65),
array("dfgdf23" => 97)
);
For this I am using:
uksort($a, function($key1, $key2) use ($res) {
return (array_search($key1, $res) > array_search($key2, $res));
});
Another method:
$arr2ordered = array() ;
foreach (array_keys($a) as $key) {
$arr2ordered[$key] = $a[$key] ;
}
But I didn't get my result;
I already tried with this also:
$price = array();
foreach ($a as $key => $row)
{
$price[$key] = $row;
}
array_multisort($price, SORT_DESC, $a);
print_r($a);
But still, I didn't get my result.
Upvotes: 1
Views: 61
Reputation: 345
try that code
$a = array(array("fghfg12" => 34),
array("dfgdf23" => 97),
array("wetw13" => 65),
array("rtyr567" => 18));
usort($a, function($a, $b){
return array_values($a) > array_values($b);
});
But only for your structure..
Upvotes: 0
Reputation: 41820
Since you don't know what the key of each inner array will be, you can map current()
over $a
to get the first value in each inner array, then use that array of values as the first argument to array_multisort()
to sort $a
.
array_multisort(array_map('current', $a), $a);
Check it out: https://3v4l.org/4Zu0q
Upvotes: 2