【发布时间】: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.32是float而不是integer,将元素映射到string。 -
这是否意味着我需要将数组转换为字符串值列表,然后在@iainn(用于额外的数学过程)之后将其转换回数字?忽略“休息”;该代码是使用 switch 的更大功能的一部分,我错过了@RiggsFolly(很好发现)
-
@JamesParry 将数组转换为字符串,然后将结果转换回浮点数对我来说是一种解决方法。最终的限制是 PHP 数组不能使用浮点数作为键,所以如果你想自己做的话,你需要想出另一个数据结构。
标签: php average mode negative-number