如何获得PHP中数组值之间的平均距离?
对于下面的数组,这是~20
,但如何以编程方式获得它?如何获得PHP中数组值之间的平均距离?
array(12) {
[0]=>
int(29)
[1]=>
int(50)
[2]=>
int(72)
[3]=>
int(93)
[4]=>
int(114)
[5]=>
int(136)
[6]=>
int(157)
[7]=>
int(178)
[8]=>
int(199)
[9]=>
int(221)
[10]=>
int(242)
[11]=>
int(263)
}
什么是从(伪代码)阻止你:
diff = 0
for i from 0 to (array length)-2 # this should be run (array length)-1 times total
diff += Math.abs(array[i]-array[i+1])
end
return diff/(array length-1)
?
如果PHP为枚举类型注入(或减少)或映射(或数组散步)方法,这将更加简洁。
note我只提供这个伪代码作为将被用来解决这个问题的不言自明的算法。我承认我不是PHP的主人(相反,我从算法的角度来看待这个问题);我只是想知道为什么这个简单的解决方案不被提问者采用。如果有一个答案可以做到这一点,本质上,并在适当的PHP中,请选择它在我的上面。
$difference = 0;
$length = count($array);
for ($i=1; $i < $length; $i++)
$difference += abs($array[$i] - $array[$i-1]);
if ($length !== 0)
$result = $difference/$length;
else
$result = 0;
格式化您的代码并修复它。希望你不介意。 :) – 2010-06-22 08:57:52
没问题 - thx – Thariama 2010-06-22 09:03:31
不知道添加'abs'的注释去了哪里,但也补充说。虽然Justin L.是对的 - 如果值按升序排序,则不需要。 – 2010-06-22 09:03:43
你计算*所有*值之间的距离还是只是连续的? – 2010-06-22 08:49:03
@菲利克斯,只是连续的。 – wamp 2010-06-22 08:51:41
您的项目是否总是按升序排序? – 2010-06-22 09:00:41