【问题标题】:PHP: Calculate average value of an array if have more than one elementPHP:如果有多个元素,则计算数组的平均值
【发布时间】:2016-02-09 14:28:02
【问题描述】:

只有当有多个元素时,我才必须计算从查询中获取的数组的值,否则我必须返回元素的值,我正在使用以下代码:

function calculate_average($arr) {
  if (count($arr) === 1) {
    $average = $arr;
  } else {
    sort($arr);
    $count = count($arr); //count items in array
    $sum = array_sum($arr); //sum of numbers in array
    $median = $sum / $count; //divide sum by count
    $average = ceil($median); //convert number in excess value
  }
   return $average;
}

当有两个或多个值时工作,但只有一个值时返回NULL,为什么?

感谢所有愿意参与的人。

【问题讨论】:

  • 为什么不在一行中做所有事情,像这样:return ceil(array_sum($arr) / count($arr));
  • 你说得对,我通常是一行一行的做所有的操作,所以任何人都可以明白谁在做,你的表达肯定更正确

标签: php arrays average median


【解决方案1】:

正如人们所说,要按照您尝试的方式进行操作,您需要访问数组的第一个元素,例如

$average = $arr[0];

但是,您计算平均值的方法仍然适用于具有一个元素的数组。它只会工作到 x/1。

function calculate_average($arr) {
  $count = count($arr); //count items in array
  $sum = array_sum($arr); //sum of numbers in array
  $median = $sum / $count; //divide sum by count
  $average = ceil($median); //round number

  return $average;
}

【讨论】:

  • 这不行,我只有一个项目时得到一个空响应
  • 它对我有用。你运行的是什么版本的PHP?你能展示你正在测试的数据,看看是否还有其他奇怪的事情发生吗?演示:sandbox.onlinephpfunctions.com/code/…
【解决方案2】:

请试试这个:

function calculate_average($arr) {
  if (count($arr) === 1) {
    $average = $arr[0];
  } else {
    sort($arr);
    $count = count($arr); //count items in array
    $sum = array_sum($arr); //sum of numbers in array
    $median = $sum / $count; //divide sum by count
    $average = ceil($median); //convert number in excess value
  }
   return $average;
}

【讨论】:

  • 您实际上是在分配数组 $average = $arr;到变量 $average 所以它应该是 $average = $arr[0];
  • 当然没有必要对数组进行排序,我想!除非您有特定的原因
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2017-02-06
  • 2019-01-28
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
相关资源
最近更新 更多