如何在PHP中获取数组值之间的平均距离?

时间:2010-06-22 08:46:40

标签: php arrays

对于下面的数组,它是~20但是如何以编程方式获取它?

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)
}

2 个答案:

答案 0 :(得分:1)

什么阻止你(伪代码):

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为可枚举方法注入(或减少)或映射(或数组遍历)方法,这将更加简洁。

注意我只提供此伪代码作为用于解决此问题的不言而喻的算法。我承认我不是PHP的主人(相反,我从算法的角度来看这个问题);我只是想知道为什么这个简单的解决方案不能被提问者采纳。如果有一个答案可以做同样的事情,基本上,用适当的PHP做,请在我的上面选择它。

答案 1 :(得分:0)

$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;