phparrayssortingmultidimensional-array

Sorting a 2d array by column descending


I have a PHP array that is two dimensional. The "inner" array has a value that I want to sort on.

For example:

$myarray[1]['mycount']=12
$myarray[2]['mycount']=13
$myarray[3]['mycount']=9

I want to sort the "inner" array in descending order.

So the results for the following will be 13, 12, 9

foreach ($myarray as $myarr) {
    print $myarr['mycount']
}

Solution

  • You can use usort(); to sort by a user-defined comparison.

    // Our own custom comparison function
    function fixem($a, $b){
      if ($a["mycount"] == $b["mycount"]) { return 0; }
      return ($a["mycount"] < $b["mycount"]) ? -1 : 1;
    }
    
    // Our Data
    $myarray[0]['mycount']=12
    $myarray[1]['mycount']=13
    $myarray[2]['mycount']=9
    
    // Our Call to Sort the Data
    usort($myArray, "fixem");
    
    // Show new order
    print "<pre>";
    print_r($myArray);
    print "</pre>";