获取 PHP 数组中的最小值和最大值

2022-08-30 10:56:16

我有一个这样的数组:


array (0 => 
  array (
    'id' => '20110209172713',
    'Date' => '2011-02-09',
    'Weight' => '200',
  ),
  1 => 
  array (
    'id' => '20110209172747',
    'Date' => '2011-02-09',
    'Weight' => '180',
  ),
  2 => 
  array (
    'id' => '20110209172827',
    'Date' => '2011-02-09',
    'Weight' => '175',
  ),
  3 => 
  array (
    'id' => '20110211204433',
    'Date' => '2011-02-11',
    'Weight' => '195',
  ),
)

我需要提取最小和最大权重值。在此示例中

$min值 = 175

$max值 = 200

关于如何做到这一点的任何帮助?谢谢!


答案 1

备选案文1.首先,映射数组以获取这些数字(而不是完整的详细信息):

$numbers = array_column($array, 'weight')

然后你得到最小值和最大值:

$min = min($numbers);
$max = max($numbers);

备选案文2.(仅当您没有 PHP 5.5 或更高版本时)与选项 1 相同,但要提取值,请使用:array_map

$numbers = array_map(function($details) {
  return $details['Weight'];
}, $array);

备选案文3.

备选案文4.如果您只需要最小或最大值,则可能更快:array_reduce()

$min = array_reduce($array, function($min, $details) {
  return min($min, $details['weight']);
}, PHP_INT_MAX);

这确实更多,但它们非常快。就是要从高点开始,再降越低。您可以对 执行相同的操作,但您可以从 或 开始。min()PHP_INT_MAX$max0-PHP_INT_MAX


答案 2
foreach ($array as $k => $v) {
  $tArray[$k] = $v['Weight'];
}
$min_value = min($tArray);
$max_value = max($tArray);