【问题标题】:get min value from php array depend on column value从php数组中获取最小值取决于列值
【发布时间】:2018-05-14 17:39:12
【问题描述】:

我正在尝试获取对另一列值进行分组的二维数组的最小值。

array(3) {
  [0]=>
  array(3) {
    ["cid"]=>
    int(53)
    ["cpr"]=>
    int(243)
    ["cty"]=>
    string(1) "1"
  }
  [1]=>
  array(3) {
    ["cid"]=>
    int(55)
    ["cpr"]=>
    float(270)
    ["cty"]=>
    string(1) "1"
  }
  [2]=>
  array(3) {
    ["cid"]=>
    int(54)
    ["cpr"]=>
    float(367.65)
    ["cty"]=>
    string(1) "2"
  }
}

例如,我想得到cty=1 然后cty=2 ....

【问题讨论】:

  • 究竟应该使用哪个值来确定一个数组是否小于另一个? cpr? cid?每个数组的所有值?另外,您想为每个不同的cty 值获取一个数组(“最小”数组)吗?
  • 我猜 OP 想要每个 cty 的最小值 cpr,每个 cty 的最小值 cid,等等。由于不需要特定的输出格式,最小数组 你提到的似乎是一个公平的输出。
  • 抱歉,为了清楚起见,我想要来自具有相同 cty 的单元格的最小 cpr

标签: php arrays sorting min


【解决方案1】:

尝试使用您的输入数组测试此代码

$arr = array(array(
    "cid"=>'',
    "cpr"=>'',
    "cty"=>"1"
  ),
  array(
    "cid"=>'',
    "cpr"=>'',
    "cty"=>"1"
  ),
  array(
    "cid"=>'',
    "cpr"=>367.65,
    "cty"=> "2"
  ));
echo "<pre>";
print_r($arr[array_search(min(array_column($arr, 'cty')),array_column($arr, 'cty'))]);

【讨论】:

    【解决方案2】:

    抱歉,为了清楚起见,我想要具有相同 cty 的单元格的最小 cpr。 例如,我需要获取 cty=1 的所有记录的 min cpr,然后 cty=2 ....

    【讨论】:

      【解决方案3】:

      你会使用PHP's uasort

      function cmp($a, $b) {
          $a = intval($a['cty']);
          $b = intval($b['cty']);
      
          if ($a == $b) {
              return 0;
          }
          return ($a < $b) ? -1 : 1;
      }
      
      uasort($array, 'cmp');
      echo $array[0]['cty'];
      

      $array 是你的数组

      【讨论】:

      • 感谢@InzeNL 的更正,我的英文有点问题
      • 这不是问题的答案。 OP 要求具有相同cty 值的子数组中的每个字段的最小值。您只是对输入数组进行排序,这与 OP 的问题无关。
      • 好吧抱歉,我没看懂问题
      猜你喜欢
      • 2018-04-28
      • 1970-01-01
      • 2011-08-16
      • 2015-10-04
      • 2010-11-23
      • 2019-09-19
      • 2011-10-04
      • 2017-08-07
      • 1970-01-01
      相关资源
      最近更新 更多