1

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 didnt get my result

Teresa
  • 127
  • 2
  • 8

2 Answers2

2

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

Don't Panic
  • 41,125
  • 10
  • 61
  • 80
0

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..