3v4l.org

run code in 300+ PHP versions simultaneously
<?php $data = [ [ "item" => 'apple', "quality" => 3, "store" => 'freds', "price" => 2 ], [ "item" => 'pear', "quality" => 1, "store" => 'bobs', "price" => 3 ], [ "item" => 'banana', "quality" => 2, "store" => 'freds', "price" => 1 ], [ "item" => 'kiwi', "quality" => 2, "store" => 'sams', "price" => 4 ], [ "item" => 'coconut', "quality" => 2, "store" => 'sams', "price" => 6, ], [ "item" => 'lime', "quality" => 3, "store" => 'sams', "price" => 5 ] ]; usort($data, function ($a,$b){ if($a['quality']==$b['quality']){ if($a['store']==$b['store']){ if($a['price']==$b['price']){ return 0; }else{ return $a['price']>$b['price']?-1:1;//Descending } }else{ return $a['store']<$b['store']?-1:1;//Ascending } }else{ return $a['quality']<$b['quality']?-1:1;//Ascending } }); var_dump($data);
Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
array(6) { [0]=> array(4) { ["item"]=> string(4) "pear" ["quality"]=> int(1) ["store"]=> string(4) "bobs" ["price"]=> int(3) } [1]=> array(4) { ["item"]=> string(6) "banana" ["quality"]=> int(2) ["store"]=> string(5) "freds" ["price"]=> int(1) } [2]=> array(4) { ["item"]=> string(7) "coconut" ["quality"]=> int(2) ["store"]=> string(4) "sams" ["price"]=> int(6) } [3]=> array(4) { ["item"]=> string(4) "kiwi" ["quality"]=> int(2) ["store"]=> string(4) "sams" ["price"]=> int(4) } [4]=> array(4) { ["item"]=> string(5) "apple" ["quality"]=> int(3) ["store"]=> string(5) "freds" ["price"]=> int(2) } [5]=> array(4) { ["item"]=> string(4) "lime" ["quality"]=> int(3) ["store"]=> string(4) "sams" ["price"]=> int(5) } }

preferences:
159.56 ms | 410 KiB | 5 Q