'Sort multidimensional array by specific key value

I'm working on algorithm to display my events on the website. I want to sort my multidimensional array by specific key value.

My array:

    ["2022-02-28"]=>
  array(1) {
    [0]=>
    array(3) {
      ["post_id"]=>
      string(4) "3656"
      ["time"]=>
      string(5) "16:05"
      ["priority"]=>
      string(1) "0"
    }
  }
  ["2022-03-01"]=>
  array(2) {
    [2]=>
    array(3) {
      ["post_id"]=>
      string(4) "3656"
      ["time"]=>
      string(5) "16:05"
      ["priority"]=>
      string(1) "0"
    }
    [3]=>
    array(3) {
      ["post_id"]=>
      string(4) "3784"
      ["time"]=>
      string(5) "13:00"
      ["priority"]=>
      string(1) "0"
    }
  }
  ["2022-03-03"]=>
  array(1) {
    [5]=>
    array(3) {
      ["post_id"]=>
      string(4) "3663"
      ["time"]=>
      string(5) "13:06"
      ["priority"]=>
      string(1) "1"
    }
  }
}

I want to sort the array by "time" key value. So for example at this index :

    ["2022-03-01"]=>
  array(2) {
    [2]=>
    array(3) {
      ["post_id"]=>
      string(4) "3656"
      ["time"]=>
      string(5) "16:05"
      ["priority"]=>
      string(1) "0"
    }
    [3]=>
    array(3) {
      ["post_id"]=>
      string(4) "3784"
      ["time"]=>
      string(5) "13:00"
      ["priority"]=>
      string(1) "0"
    }
  }

I want first 13:00 to appear then 16:05. Thank you for your help in advance! :)



Solution 1:[1]

Use usort for define custom sort.

function time_sort(array $arr){
  usort($arr, function($a, $b){
    return strcmp($a['time'], $b['time']);
  });
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 amiad