我正在尝试计算数组中所有值之间的差异,并将它们(差异)存储在一个数组中。
理想的例子是这样的:
<?php
$data = array('1', '5', '12');
// Compute the difference between each value with another value.
?>
然后我想在数组中得到以下结果:
4, 11, 7
我怎样才能实现它?
答案 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循环,一个用于迭代当前数组,另一个用于开始比较并将其存储在结果数组中。 我不太确定您的输出,因为信息较少,但您可以尝试如下:
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;
答案 2 :(得分:0)
$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