PHP数组:计算同一数组中值之间的差异

时间:2017-12-09 18:56:05

标签: php arrays

我正在尝试计算数组中所有值之间的差异,并将它们(差异)存储在一个数组中。

理想的例子是这样的:

<?php

$data = array('1', '5', '12');

// Compute the difference between each value with another value.

?>

然后我想在数组中得到以下结果:

4, 11, 7

我怎样才能实现它?

3 个答案:

答案 0 :(得分:2)

试试这个

$data = array('1', '5', '12');
$differences=[];
for($i=0;$i<count($data);$i++){
    for($j=$i+1;$j<count($data);$j++){
        $differences[]=abs($data[$i]-$data[$j]);
    }
}
print_r($differences);

结果

Array
(
    [0] => 4
    [1] => 11
    [2] => 7
)

答案 1 :(得分:0)

尝试使用double for循环,一个用于迭代当前数组,另一个用于开始比较并将其存储在结果数组中。 我不太确定您的输出,因为信息较少,但您可以尝试如下:

&#13;
&#13;
var a= ["1","5","12"]
for(i=0;i<3;i++){for(j=0;j<3;j++){if(i>j)console.log(a[i]-a[j])}}
&#13;
&#13;
&#13;

答案 2 :(得分:0)

选中此https://3v4l.org/9oiqs

$data = [1, 5, 12, 15, 20, 25,];

function getDifferences($aValues)
{
    $aDiff = [];
    $iSize = count($aValues);
    for ($i = 0; $i < $iSize; $i++)
    {
        for ($j = $i + 1; $j < $iSize; $j++)
        {
            $aDiff[$aValues[$i]][] = abs($aValues[$i] - $aValues[$j]);
        }
    }
    return $aDiff;
}

function printDifferences($aValues){
    foreach ($aValues as $iNumber => $aDiffs){
        echo "Differences for $iNumber: " . implode(', ', $aDiffs) . PHP_EOL;
    }
}

$aDiff = getDifferences($data);
printDifferences($aDiff);
  

<强>结果
  1:4,11,14,19,24的差异   5:7,10,15,20的差异   12:3,8,11的差异   15:5,10的差异   差异为20:5