如何通过数组内部的最高值从多维中检索数组



我需要求解一个函数来检索条件中的最高数组集,主要问题是验证一个数组是否有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];
}

相关内容

  • 没有找到相关文章

最新更新