一尘不染

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

php

我有一个像这样的数组:

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_value = 175

$ max_value = 200

有什么帮助吗?谢谢 !


阅读 892

收藏
2020-05-29

共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是具有高启动,并得到越来越低。您可以这样做$max,但您将从0或开始-PHP_INT_MAX

2020-05-29