0

この配列があるとしましょう

$number = [2,1,4,3,6,2];
  1. 最初に配列の要素を 2 でペアにし、それらの違いを見つけます。これが最初の要件の出力です。

    $diff[] = [1,1,4];
    
  2. 2番目にすべての差を合計すると、これが最終出力です

    $sum[] = [6];
    

条件:

  1. 配列のサイズは常に偶数です
  2. ペアの最初の要素は常に 2 番目の要素よりも大きいため、負の差はありません

私がこれまで行ってきたことは、配列のサイズを数えただけで、その後、それらを 2 でペアにする方法がわかりません。T_T

これはphpで可能ですか?それを行うための組み込み関数はありますか?

4

7 に答える 7

3

1 行:

$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

すべての異なるステージを維持したい場合は、

$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

これを試してください:

    $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 に答える