fork download
  1. <?php
  2.  
  3. $array = array(
  4. 'id' => '1',
  5. 'a_date' => '2016-04-30',
  6. ),
  7. 'id' => '2',
  8. 'a_date' => '2016-05-21',
  9. ),
  10. 'id' => '3',
  11. 'b_date' => '2016-05-30',
  12. ),
  13. 'id' => '4',
  14. 'b_date' => '2016-04-02',
  15. ),
  16. );
  17. usort( $array, function ( $a, $b ) {
  18. $x = ( isset( $a[ 'a_date' ] ) ) ? 'a_date' : 'b_date';
  19. $y = ( isset( $b[ 'a_date' ] ) ) ? 'a_date' : 'b_date';
  20. return strnatcmp( $a[ $x ], $b[ $y ] );
  21. } );
  22. var_dump( $array );
Success #stdin #stdout 0.02s 52432KB
stdin
Standard input is empty
stdout
array(4) {
  [0]=>
  array(2) {
    ["id"]=>
    string(1) "4"
    ["b_date"]=>
    string(10) "2016-04-02"
  }
  [1]=>
  array(2) {
    ["id"]=>
    string(1) "1"
    ["a_date"]=>
    string(10) "2016-04-30"
  }
  [2]=>
  array(2) {
    ["id"]=>
    string(1) "2"
    ["a_date"]=>
    string(10) "2016-05-21"
  }
  [3]=>
  array(2) {
    ["id"]=>
    string(1) "3"
    ["b_date"]=>
    string(10) "2016-05-30"
  }
}