将数组中的元素按两个对分配,然后找出差值和总和

时间:2013-10-10 09:18:44

标签: php arrays

假设我有这个数组

$number = [2,1,4,3,6,2];
  1. 首先将数组中的元素按两个对分配,然后找出它们的区别 所以这是第一个要求中的输出

    $diff[] = [1,1,4];
    
  2. 第二次总结所有的差异 这是最终输出

    $sum[] = [6];
    
  3. 条件:

    1. 数组大小始终是偶数
    2. 一对中的第一个元素总是大于第二个元素,因此它们没有负差异
    3. 到目前为止,我所做的只是计算一个数组的大小然后我不知道如何将它们配对两个。 T_T

      这可能在PHP中吗?有内置功能吗?

7 个答案:

答案 0 :(得分:3)

一行:

$number = [2,1,4,3,6,2];
$total = array_sum(array_map(function ($array) {
    return current($array) - next($array); 
}, array_chunk($number, 2)));
echo $total;

答案 1 :(得分:2)

这应该可以正常工作:

<?
$number = array(2,1,4,3,6,2);
for($i=0;$i<count($number); $i+=2){
    $dif[] = $number[$i] - $number[$i+1];
}
print_r($dif);
$sum = 0;
foreach ($dif as $item){
    $sum += $item;
}
echo 'SUM = '.$sum;
?>

Working CODE

答案 2 :(得分:1)

考虑到你的情况,我来到了以下

$number = [2,1,4,3,6,2];
$total = 0;
for($i = 0; $i < count($number); $i+=2) {
    $total += $number[$i] - $number[$i + 1];
}

答案 3 :(得分:1)

如果你想保留所有不同的阶段,

$numbers = [2,1,4,3,6,2];
$diff = [];
for($i=0,$c=count($numbers);$i<$c;$i+=2)
{
    $diff[] = $numbers[$i]-$numbers[$i+1];
}
$sum = array_sum($diff);

否则,只需获取总数并绕过diff数组:

$numbers = [2,1,4,3,6,2];
$total = 0;
for($i=0,$c=count($numbers);$i<$c;$i+=2)
{
    $total += $numbers[$i]-$numbers[$i+1];
}

答案 4 :(得分:1)

请检查并查看这是否适合您。

    <?php        
    $sum=0;
    $number = array(2,1,4,3,6,2);
    for ($i=0;$i<=count($number);$i++) {
    if ($i%2 == 1 ) {  
        $sum = $sum + $number[$i-1] - $number[$i];
    }
    }

    print $sum;
    ?>

答案 5 :(得分:1)

试试这个:

    $number = array(2,1,4,3,6,2);

    $diff = array();
    $v3 = 0;
    $i=1;
    foreach($number as $val){
    if ($i % 2 !== 0) {
        $v1 = $val;
    }
    if ($i % 2 === 0) {
        $v2 = $val;
        $diff[] = $v1-$v2;
        $v3+= $v1-$v2;       
        }
    $i++;
    }
    print $v3;//total value
    print_r($diff); //diff value array

答案 6 :(得分:1)

我已经做到了这一点,它提供了所需的解决方案。

$arr = array(2,1,4,3,6,2);
$temp = 0;
$diff = array();
foreach ($arr as $key => $value) {
    if($key % 2 == 0) {
        $temp = $value;
    }
    else {
        $diff[] = $temp - $value;
    }
}

print_R($diff);
print 'Total :' . array_sum($diff);

注意:如果任何人知道任何预先定义的函数,请更新,而不是可以对此代码进行排序。