我对一个数组进行排序,其中一个元素也是数组,同样需要排序。外部数组已排序,但内部数组未排序。只对使用 usort 函数进行排序感兴趣。我哪里做错了?
<?php
$products = [
['meat' => 1, 'price' => 250],
['water' => 1, 'price' => 30],
['juice' => 1, 'price' => 50],
['tea' => 1, 'price' => 75],
['group' => 1, 'price' => [
['fruits' => 1, 'price' => 90],
['vegetables' => 1, 'price' => 75],
['cereals' => 1, 'price' => 80]
]]
];
usort($products, function($item1, $item2){
if (!is_array($item1['price']) && !is_array($item2['price'])) {
return $item2['price'] <=> $item1['price'];
} elseif (is_array($item1['price'])) {
usort($item1['price'], function($it1, $it2){
return $it2['price'] <=> $it1['price'];
});
} elseif (is_array($item2['price'])) {
usort($item2['price'], function($it1, $it2){
return $it2['price'] <=> $it1['price'];
});
}
});
print_r($products);
由于您具有异构数据结构,因此使用一个函数进行排序将不起作用。我提供这个选项: