0
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);

我理解上面的代码是不正确的,但我希望它能揭示我在哪里得到这个。

任何帮助将不胜感激。

4

1 回答 1

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);
于 2013-05-26T15:40:11.600 回答