获取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

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

原文由 Peter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 638
2 个回答

选项 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() s,但它们非常快。 PHP_INT_MAX 是从一个高点开始,然后越来越低。您可以对 $max 执行相同的操作,但您可以从 0-PHP_INT_MAX 开始。

原文由 Rudie 发布,翻译遵循 CC BY-SA 4.0 许可协议

从数组中快速打印五个最大和最小数字,而不使用 php 中的排序数组:-

 <?php

$array = explode(',',"78, 60, 62, 68, 71, 68, 73, 85, 66, 64, 76, 63, 81, 76, 73,
68, 72, 73, 75, 65, 74, 63, 67, 65, 64, 68, 73, 75, 79, 73");
$t=0;
$l=count($array);
foreach($array as $v)
{
 $t += $v;
}
 $avg= $t/$l;
 echo "average Temperature is : ".$avg."  ";

echo "<br>List of seven highest temperatsures :-";
$m[0]= max($array);
for($i=1; $i <7 ; $i++)
{
$m[$i]=max(array_diff($array,$m));
}
foreach ($m as $key => $value) {
    echo "  ".$value;
}
echo "<br> List of seven lowest temperatures : ";
$mi[0]= min($array);
for($i=1; $i <7 ; $i++)
{
$mi[$i]=min(array_diff($array,$mi));
}

foreach ($mi as $key => $value) {
    echo "  ".$value;
}
?>

原文由 dhavaloza 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题