3v4l.org

run code in 300+ PHP versions simultaneously
<?php $sortingArray = [ '0' => [ 'id' => 1287, 'data-price' => '£209.95', 'size' => '120 x 60' ], '1' => [ 'id' => 1245, 'data-price' => '£29.95', 'size' => '30 x 20' ], '2' => [ 'id' => 1264, 'data-price' => '£15.95', 'size' => '20 x 15' ], '3' => [ 'id' => 1263, 'data-price'=> '£14.95', 'size' => '18 x 13' ], '4' => [ 'id' => 1281, 'data-price' => '£119.95', 'size' => '75 x 50' ], '5' => [ 'id' => 1275, 'data-price' => '£94.95', 'size' => '60 x 40' ], '6' => [ 'id' => 1315, 'data-price' => '£39.95', 'size' => '50 x 13' ], ]; function array_sort(array $array, string $on, string $order = 'ASC') { $sortableArray = $array; switch ($on) { case 'size': usort($sortableArray, 'sortBySize'); break; case 'price': usort($sortableArray, 'sortByPrice'); break; default: return $sortableArray; break; } if (strtoupper($order) === 'DESC') { return array_reverse($sortableArray); } return $sortableArray; } function sortByPrice(array $a, array $b) { return (float) mb_substr($a['data-price'], 1) <=> (float) mb_substr($b['data-price'], 1); } function sortBySize(array $a, array $b) { return (int) $a['size'] <=> (int) $b['size']; } echo 'Price, ascending:'.PHP_EOL; var_dump(array_sort($sortingArray, 'price', 'asc')); echo PHP_EOL.'Price, descending:'.PHP_EOL; var_dump(array_sort($sortingArray, 'price', 'DESC')); echo PHP_EOL.'Price, bogus order:'.PHP_EOL; var_dump(array_sort($sortingArray, 'price', 'RHINO')); echo PHP_EOL.'Size, ascending:'.PHP_EOL; var_dump(array_sort($sortingArray, 'size', 'ASC')); echo PHP_EOL.'Size, descending:'.PHP_EOL; var_dump(array_sort($sortingArray, 'size', 'desc')); echo PHP_EOL.'Size, bogus order:'.PHP_EOL; var_dump(array_sort($sortingArray, 'size', 'ELEPHANT')); echo PHP_EOL.'Bogus criteria (retains the order):'.PHP_EOL; var_dump(array_sort($sortingArray, 'whim')); echo PHP_EOL.'Bogus criteria (retains the order):'.PHP_EOL; var_dump(array_sort($sortingArray, 'whim', 'desc'));

Abusive script

This script was stopped while abusing our resources

Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.29, 8.2.0 - 8.2.23, 8.3.0 - 8.3.11
Price, ascending: array(7) { [0]=> array(3) { ["id"]=> int(1263) ["data-price"]=> string(7) "£14.95" ["size"]=> string(7) "18 x 13" } [1]=> array(3) { ["id"]=> int(1264) ["data-price"]=> string(7) "£15.95" ["size"]=> string(7) "20 x 15" } [2]=> array(3) { ["id"]=> int(1245) ["data-price"]=> string(7) "£29.95" ["size"]=> string(7) "30 x 20" } [3]=> array(3) { ["id"]=> int(1315) ["data-price"]=> string(7) "£39.95" ["size"]=> string(7) "50 x 13" } [4]=> array(3) { ["id"]=> int(1275) ["data-price"]=> string(7) "£94.95" ["size"]=> string(7) "60 x 40" } [5]=> array(3) { ["id"]=> int(1281) ["data-price"]=> string(8) "£119.95" ["size"]=> string(7) "75 x 50" } [6]=> array(3) { ["id"]=> int(1287) ["data-price"]=> string(8) "£209.95" ["size"]=> string(8) "120 x 60" } } Price, descending: array(7) { [0]=> array(3) { ["id"]=> int(1287) ["data-price"]=> string(8) "£209.95" ["size"]=> string(8) "120 x 60" } [1]=> array(3) { ["id"]=> int(1281) ["data-price"]=> string(8) "£119.95" ["size"]=> string(7) "75 x 50" } [2]=> array(3) { ["id"]=> int(1275) ["data-price"]=> string(7) "£94.95" ["size"]=> string(7) "60 x 40" } [3]=> array(3) { ["id"]=> int(1315) ["data-price"]=> string(7) "£39.95" ["size"]=> string(7) "50 x 13" } [4]=> array(3) { ["id"]=> int(1245) ["data-price"]=> string(7) "£29.95" ["size"]=> string(7) "30 x 20" } [5]=> array(3) { ["id"]=> int(1264) ["data-price"]=> string(7) "£15.95" ["size"]=> string(7) "20 x 15" } [6]=> array(3) { ["id"]=> int(1263) ["data-price"]=> string(7) "£14.95" ["size"]=> string(7) "18 x 13" } } Price, bogus order: array(7) { [0]=> array(3) { ["id"]=> int(1263) ["data-price"]=> string(7) "£14.95" ["size"]=> string(7) "18 x 13" } [1]=> array(3) { ["id"]=> int(1264) ["data-price"]=> string(7) "£15.95" ["size"]=> string(7) "20 x 15" } [2]=> array(3) { ["id"]=> int(1245) ["data-price"]=> string(7) "£29.95" ["size"]=> string(7) "30 x 20" } [3]=> array(3) { ["id"]=> int(1315) ["data-price"]=> string(7) "£39.95" ["size"]=> string(7) "50 x 13" } [4]=> array(3) { ["id"]=> int(1275) ["data-price"]=> string(7) "£94.95" ["size"]=> string(7) "60 x 40" } [5]=> array(3) { ["id"]=> int(1281) ["data-price"]=> string(8) "£119.95" ["size"]=> string(7) "75 x 50" } [6]=> array(3) { ["id"]=> int(1287) ["data-price"]=> string(8) "£209.95" ["size"]=> string(8) "120 x 60" } } Size, ascending: array(7) { [0]=> array(3) { ["id"]=> int(1263) ["data-price"]=> string(7) "£14.95" ["size"]=> string(7) "18 x 13" } [1]=> array(3) { ["id"]=> int(1264) ["data-price"]=> string(7) "£15.95" ["size"]=> string(7) "20 x 15" } [2]=> array(3) { ["id"]=> int(1245) ["data-price"]=> string(7) "£29.95" ["size"]=> string(7) "30 x 20" } [3]=> array(3) { ["id"]=> int(1315) ["data-price"]=> string(7) "£39.95" ["size"]=> string(7) "50 x 13" } [4]=> array(3) { ["id"]=> int(1275) ["data-price"]=> string(7) "£94.95" ["size"]=> string(7) "60 x 40" } [5]=> array(3) { ["id"]=> int(1281) ["data-price"]=> string(8) "£119.95" ["size"]=> string(7) "75 x 50" } [6]=> array(3) { ["id"]=> int(1287) ["data-price"]=> string(8) "£209.95" ["size"]=> string(8) "120 x 60" } } Size, descending: array(7) { [0]=> array(3) { ["id"]=> int(1287) ["data-price"]=> string(8) "£209.95" ["size"]=> string(8) "120 x 60" } [1]=> array(3) { ["id"]=> int(1281) ["data-price"]=> string(8) "£119.95" ["size"]=> string(7) "75 x 50" } [2]=> array(3) { ["id"]=> int(1275) ["data-price"]=> string(7) "£94.95" ["size"]=> string(7) "60 x 40" } [3]=> array(3) { ["id"]=> int(1315) ["data-price"]=> string(7) "£39.95" ["size"]=> string(7) "50 x 13" } [4]=> array(3) { ["id"]=> int(1245) ["data-price"]=> string(7) "£29.95" ["size"]=> string(7) "30 x 20" } [5]=> array(3) { ["id"]=> int(1264) ["data-price"]=> string(7) "£15.95" ["size"]=> string(7) "20 x 15" } [6]=> array(3) { ["id"]=> int(1263) ["data-price"]=> string(7) "£14.95" ["size"]=> string(7) "18 x 13" } } Size, bogus order: array(7) { [0]=> array(3) { ["id"]=> int(1263) ["data-price"]=> string(7) "£14.95" ["size"]=> string(7) "18 x 13" } [1]=> array(3) { ["id"]=> int(1264) ["data-price"]=> string(7) "£15.95" ["size"]=> string(7) "20 x 15" } [2]=> array(3) { ["id"]=> int(1245) ["data-price"]=> string(7) "£29.95" ["size"]=> string(7) "30 x 20" } [3]=> array(3) { ["id"]=> int(1315) ["data-price"]=> string(7) "£39.95" ["size"]=> string(7) "50 x 13" } [4]=> array(3) { ["id"]=> int(1275) ["data-price"]=> string(7) "£94.95" ["size"]=> string(7) "60 x 40" } [5]=> array(3) { ["id"]=> int(1281) ["data-price"]=> string(8) "£119.95" ["size"]=> string(7) "75 x 50" } [6]=> array(3) { ["id"]=> int(1287) ["data-price"]=> string(8) "£209.95" ["size"]=> string(8) "120 x 60" } } Bogus criteria (retains the order): array(7) { [0]=> array(3) { ["id"]=> int(1287) ["data-price"]=> string(8) "£209.95" ["size"]=> string(8) "120 x 60" } [1]=> array(3) { ["id"]=> int(1245) ["data-price"]=> string(7) "£29.95" ["size"]=> string(7) "30 x 20" } [2]=> array(3) { ["id"]=> int(1264) ["data-price"]=> string(7) "£15.95" ["size"]=> string(7) "20 x 15" } [3]=> array(3) { ["id"]=> int(1263) ["data-price"]=> string(7) "£14.95" ["size"]=> string(7) "18 x 13" } [4]=> array(3) { ["id"]=> int(1281) ["data-price"]=> string(8) "£119.95" ["size"]=> string(7) "75 x 50" } [5]=> array(3) { ["id"]=> int(1275) ["data-price"]=> string(7) "£94.95" ["size"]=> string(7) "60 x 40" } [6]=> array(3) { ["id"]=> int(1315) ["data-price"]=> string(7) "£39.95" ["size"]=> string(7) "50 x 13" } } Bogus criteria (retains the order): array(7) { [0]=> array(3) { ["id"]=> int(1287) ["data-price"]=> string(8) "£209.95" ["size"]=> string(8) "120 x 60" } [1]=> array(3) { ["id"]=> int(1245) ["data-price"]=> string(7) "£29.95" ["size"]=> string(7) "30 x 20" } [2]=> array(3) { ["id"]=> int(1264) ["data-price"]=> string(7) "£15.95" ["size"]=> string(7) "20 x 15" } [3]=> array(3) { ["id"]=> int(1263) ["data-price"]=> string(7) "£14.95" ["size"]=> string(7) "18 x 13" } [4]=> array(3) { ["id"]=> int(1281) ["data-price"]=> string(8) "£119.95" ["size"]=> string(7) "75 x 50" } [5]=> array(3) { ["id"]=> int(1275) ["data-price"]=> string(7) "£94.95" ["size"]=> string(7) "60 x 40" } [6]=> array(3) { ["id"]=> int(1315) ["data-price"]=> string(7) "£39.95" ["size"]=> string(7) "50 x 13" } }

preferences:
112.72 ms | 2420 KiB | 4 Q