我需要求解一个函数来检索条件中的最高数组集,主要问题是验证一个数组是否有1个以上的true,并且始终需要是最高值。
我的案例:
$purchase = 999;
$rules = array(
array(
'id' => 1,
'min' => 200,
),
array(
'id' => 2,
'min' => 300,
),
array(
'id' => 5,
'min' => 50,
),
array(
'id' => 3,
'min' => 2000,
)
);
$getRules = array();
foreach($rules as $rule){
if($purchase >= $rule['min']){
$getRules[] = $rule;
}
}
var_dump($getRules);
在这个场景中,我将得到3组数组:
array(3) {
[0]=>
array(2) {
["id"]=>
int(1)
["min"]=>
int(200)
}
[1]=>
array(2) {
["id"]=>
int(2)
["min"]=>
int(300)
}
[2]=>
array(2) {
["id"]=>
int(5)
["min"]=>
int(50)
}
}
从这3个集合中,我需要得到具有"min"键的集合。这是一个最高值,我的意思是我需要数组键编号1。
我试着用usort进行排序,但由于它是多维的,所以排序不正确,所以如果有人通过了这个测试并找到了解决方案,我真的很感激!
您可以添加一个额外的if语句,检查规则是否大于前一个规则。
foreach($rules as $rule){
if($purchase >= $rule['min']){
$getRules[] = $rule;
if(!isset($highestRule['min']) || $highestRule['min'] < $rule['min'])){
$highestRule = $rule;
}
}
}
此函数将您的数组作为参数,对其进行迭代,并在当前最小值大于前一个值的情况下不断替换$highest_min
和$highest_min_index
。
最后,它将具有您的数组的索引,该索引位于最高最小值所在的位置,并且将仅从您的数组返回该索引,从而为您提供具有最高最小值的数组。
function get_highest_min_array($in_array){
$out_array = array();
$highest_min_index = '';
$highest_min = 0;
foreach($in_array as $index => $out_array){
if($out_array['min'] > $highest_min){
$highest_min_index = $index;
$highest_min = $out_array['min'];
}
}
return $in_array[$highest_min_index];
}