【问题标题】:PHP Calculate Mode Average Containing Negative Values?PHP计算模式平均值包含负值?
【发布时间】:2018-03-20 10:11:15
【问题描述】:

我试图在一个数字数组中找到众数平均值,当数组只包含正值时它可以正常工作。但是,它似乎忽略了数组中的任何负值,我不知道为什么?

$test_array = array(3.32,4,-5.51,2,4.44,1,2,3,5,-5.51,-5.51);

$v = array_count_values($test_array); 
arsort($v); 
foreach($v as $k => $v){$mode_avg = $k; break;} 

echo $mode_avg; 

这输出“2”,什么时候应该输出“-5.51”?

【问题讨论】:

  • break ????????
  • 打开 PHP 警告,你会看到很多这样的:Warning: array_count_values(): Can only count STRING and INTEGER values!
  • 3.32float 而不是 integer,将元素映射到 string
  • 这是否意味着我需要将数组转换为字符串值列表,然后在@iainn(用于额外的数学过程)之后将其转换回数字?忽略“休息”;该代码是使用 switch 的更大功能的一部分,我错过了@RiggsFolly(很好发现)
  • @JamesParry 将数组转换为字符串,然后将结果转换回浮点数对我来说是一种解决方法。最终的限制是 PHP 数组不能使用浮点数作为键,所以如果你想自己做的话,你需要想出另一个数据结构。

标签: php average mode negative-number


【解决方案1】:

数字集的众数是出现频率最高的数字。您可以使用类似于以下代码的 PHP 来执行此操作:

$values = array_count_values($valueArray); 
$mode = array_search(max($values), $values);

Source

【讨论】:

  • 你错过了这个Warning: array_count_values(): Can only count STRING and INTEGER values
  • 是的。如果所有的数字都乘以 100,计算结果除以 100,这仍然行不通吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 2012-06-19
  • 1970-01-01
  • 2013-01-14
  • 2019-04-03
相关资源
最近更新 更多