0

eg to how to sort by 'grade'

array
{
   array
   {
      'name' => 'name1',
      'price' => '100',
      'grade' => '4.4'
   },
   array
   {
      'name' => 'name16',
      'price' => '12',
      'grade' => '1.2'
   },
   array
   {
      'name' => 'name3',
      'price' => '143',
      'grade' => '2.4'
   }
}

This is similar to a locked question but I'd like to post a one-liner answer for review. How to Sort Multi-dimensional Array by Value?

  • https://stackoverflow.com/a/17364128/3859027. it is already tackled on this answer, the last one – Kevin Aug 19 '20 at 03:31

1 Answers1

0

a one-liner:

array_multisort(array_column($myArray, 'grade'), SORT_ASC, $myArray);

array_column extracts a column

array_multisort sorts by one or more other arrays (the last parameter is the array to sort)

sort by more columns as needed, eg grade ascending, then price descending:

array_multisort(array_column($myArray, 'grade'), SORT_ASC, array_column($myArray, 'price'), SORT_DESC, $myArray);

https://www.php.net/manual/en/function.array-multisort