计算php数组中的平均百分比差异

时间:2013-05-26 15:26:41

标签: php arrays sorting

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 3
    [6] => 1
)

我想知道如何计算数组中当前值与下一个值之间的平均百分比差异。如果下一个值是较大的值,它将表现如此。 (即键[0] - [1] 1/2 * 100 = 50)。如果它是一个较小的值,它会像这样表现。 (即键[4] - [5] = 3/5 * 100 = -60)。

以下内容将代表我打算用这些百分比计算。

1/2 * 100

2/3 * 100

3/4 * 100

4/5 * 100

3/5 * 100(负面)

1/3 * 100(负面)


总计:总数/计数

这将遍历列表,然后计算出计数的平均值。我已经研究过拆分数组,但是看不出我能做到这一点。

$count = count($num); 
foreach ($num as $value) {
    array_chunk($num, 1);
    if($value<$value){
    $total1 = $total1 + ($value/$value)*100;
    }
    if($value>$value){
    $total2 = $total2 + ($value/$value)*100;
    }
}
$average = (($total1-$total2)/$count);
print($average);

我理解上面的代码是不正确的,但我希望它能揭示我对此的看法。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您不想使用foreach,因为您总是需要两个数组元素。请注意,此代码段不会保护您免受 0 值的影响。这些将使您的脚本失败。

$num   = array(1, 2, 3, 4, 5, 3, 1); 
$total = 0;
// The number of percent changes is one less than
// the size of your array.
$count = count($num) - 1;
// Array indexes start at 0
for ($i = 0; $i < $count; $i++) {
    // The current number is $num[$i], and the
    // next is $num[$i + 1]; knowing that it's
    // pretty easy to compare them.
    if ($num[$i] < $num[$i + 1]) {
        $total += (100 * $num[$i] / $num[$i + 1]);
    }   
    else {
        $total += (-100 * $num[$i + 1] / $num[$i]);
    };  
};
echo ($total / $count);