0

假设我有这个数组

$number = [2,1,4,3,6,2];
  1. 首先将数组中的元素配对并找到它们的差异,因此这是第一个要求中的输出

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

    $sum[] = [6];
    

条件:

  1. 数组大小总是偶数
  2. 一对中的第一个元素总是大于第二个,所以它们没有负差异

到目前为止我所做的只是计算数组的大小,然后我不知道如何将它们配对。T_T

这在php中可能吗?是否有内置功能可以做到这一点?

4

7 回答 7

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;
于 2013-10-10T09:30:00.367 回答
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;
?>

工作代码

于 2013-10-10T09:30:05.067 回答
1

考虑到您的条件,我得出以下结论

$number = [2,1,4,3,6,2];
$total = 0;
for($i = 0; $i < count($number); $i+=2) {
    $total += $number[$i] - $number[$i + 1];
}
于 2013-10-10T09:26:36.773 回答
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];
}
于 2013-10-10T09:31:22.360 回答
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;
    ?>
于 2013-10-10T09:33:16.307 回答
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
于 2013-10-10T09:36:09.847 回答
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);

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

于 2013-10-10T09:36:21.627 回答