<?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);
preferences:
26.47 ms | 407 KiB | 5 Q