3v4l.org

run code in 300+ PHP versions simultaneously
<?php $amsterdam = [ 65 => [ 'something' => false, 'data' => [ 'foo' => 'boo', 'price' => 100 ] ], 173 => [ 'something' => false, 'data' => [ 'foo' => 'hoo', 'price' => 2500 ] ], ]; $prague = [ 132 => [ 'something' => false, 'data' => [ 'foo' => 'boo', 'price' => 2100 ] ], 956 => [ 'something' => false, 'data' => [ 'foo' => 'hoo', 'price' => 2500 ] ], ]; $lisboa = [ 175 => [ 'something' => false, 'data' => [ 'foo' => 'boo', 'price' => 6500 ] ], 64 => [ 'something' => false, 'data' => [ 'foo' => 'hoo', 'price' => 20 ] ], ]; $cities = [ 'amsterdam' => $amsterdam, 'prague' => $prague, 'lisboa' => $lisboa ]; function getMinimumPrice($cityArray) { return array_reduce($cityArray, function($carry, $item) { return $carry === 0 ? $item['data']['price'] : min($carry, $item['data']['price']); }, 0); } uasort($cities, function($city1, $city2) { $priceCity1 = getMinimumPrice($city1); $priceCity2 = getMinimumPrice($city2); return $priceCity1 <=> $priceCity2; }); var_dump($cities);
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.25, 8.4.1 - 8.4.12
array(3) { ["lisboa"]=> array(2) { [175]=> array(2) { ["something"]=> bool(false) ["data"]=> array(2) { ["foo"]=> string(3) "boo" ["price"]=> int(6500) } } [64]=> array(2) { ["something"]=> bool(false) ["data"]=> array(2) { ["foo"]=> string(3) "hoo" ["price"]=> int(20) } } } ["amsterdam"]=> array(2) { [65]=> array(2) { ["something"]=> bool(false) ["data"]=> array(2) { ["foo"]=> string(3) "boo" ["price"]=> int(100) } } [173]=> array(2) { ["something"]=> bool(false) ["data"]=> array(2) { ["foo"]=> string(3) "hoo" ["price"]=> int(2500) } } } ["prague"]=> array(2) { [132]=> array(2) { ["something"]=> bool(false) ["data"]=> array(2) { ["foo"]=> string(3) "boo" ["price"]=> int(2100) } } [956]=> array(2) { ["something"]=> bool(false) ["data"]=> array(2) { ["foo"]=> string(3) "hoo" ["price"]=> int(2500) } } } }

preferences:
147.51 ms | 412 KiB | 5 Q