簡體   English   中英

如何通過內部數組的最大值從多維檢索數組

[英]How to retrieve a an array from a multidimensional by the highest value of arrays inside

我需要解決一個函數來檢索條件中最高的數組集,主要問題是驗證數組中是否存在多個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];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM