我有一个小问题。 我不知道该怎么做:
输入数据:
$data = [
[
'id' => 1,
'name' => "Food",
'wish_number' => 10,
'price' => 1327242001.0,
],
[
'id' => 1,
'name' => "Humanitary",
'wish_number' => 13,
'price' => 112459000.0,
]
];
我需要什么:
我需要带有max(wish_number)键值的返回数组。如果有2个或更多阵列具有相同的wish_number,我需要选择价格最高的阵列。
非常感谢你们。你真棒。
答案 0 :(得分:1)
您可以使用array_multisort()
执行此任务。例如:
$wish_number = array_map(function($col){
return $col['wish_number'];
}, $data);
$price = array_map(function($col){
return $col['price'];
}, $data);
array_multisort($data, SORT_DESC, $wish_number, SORT_DESC, $price);
echo '<pre>';
print_r($data);
$max = $data[0];
答案 1 :(得分:1)
我的例子
usort($data, $this->usort_callback);
$arr = array_slice($data, 0, 1);
public function usort_callback($a, $b)
{
if ($a['wish_number'] == $b['wish_number']) {
if ($a['price'] == $b['price']) {
return ($a['last_added'] > $b['last_added']) ? -1 : 1;
}else{
return ($a['price'] > $b['price']) ? -1 : 1;
}
}
return ( $a['wish_number'] > $b['wish_number'] ) ? -1 : 1;
}
}