<?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