3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Here's the data: $json = json_decode('[ [{"id":1,"price":11900},{"id":2,"price":499},{"id":3,"price":2099}], [{"id":1,"price":11900},{"id":2,"price":499},{"id":4,"price":999}], [{"id":1,"price":11900},{"id":2,"price":499},{"id":5,"price":899}], [{"id":1,"price":11900},{"id":2,"price":499},{"id":6,"price":2999}] ]', true); // Calculate the sums for all prices up-front: $sums = array_map(fn($v) => array_sum(array_column($v, 'price')), $json); // Pass the sums into our key-based sorter: uksort($json, function($b, $a) use ($sums) { return $sums[$a] <=> $sums[$b]; }); // See the sums, get the sorted data: var_dump($sums, $json);
Output for 8.1.3 - 8.1.33, 8.2.10 - 8.2.29, 8.3.0 - 8.3.28, 8.4.1 - 8.4.14, 8.4.16, 8.5.0 - 8.5.1
array(4) { [0]=> int(14498) [1]=> int(13398) [2]=> int(13298) [3]=> int(15398) } array(4) { [3]=> array(3) { [0]=> array(2) { ["id"]=> int(1) ["price"]=> int(11900) } [1]=> array(2) { ["id"]=> int(2) ["price"]=> int(499) } [2]=> array(2) { ["id"]=> int(6) ["price"]=> int(2999) } } [0]=> array(3) { [0]=> array(2) { ["id"]=> int(1) ["price"]=> int(11900) } [1]=> array(2) { ["id"]=> int(2) ["price"]=> int(499) } [2]=> array(2) { ["id"]=> int(3) ["price"]=> int(2099) } } [1]=> array(3) { [0]=> array(2) { ["id"]=> int(1) ["price"]=> int(11900) } [1]=> array(2) { ["id"]=> int(2) ["price"]=> int(499) } [2]=> array(2) { ["id"]=> int(4) ["price"]=> int(999) } } [2]=> array(3) { [0]=> array(2) { ["id"]=> int(1) ["price"]=> int(11900) } [1]=> array(2) { ["id"]=> int(2) ["price"]=> int(499) } [2]=> array(2) { ["id"]=> int(5) ["price"]=> int(899) } } }
Output for 8.4.15
/bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15)
Process exited with code 1.

preferences:
128.36 ms | 409 KiB | 5 Q