0

PHPでアルゴリズムを実装する必要があり、行き詰まりました。

私は次の表を持っています:http://cl.ly/image/1Z0K1g0z2c3y

反復ごとに、(S)値は次のように計算されます。

S1 = V1-P1

S2 =(V1-P1)+(V2-P2)

S3 =(V1-P1)+(V2-P2)+(V3-P3)

などなど。

私の値の配列は次のようになります。

Array
(
    [0] => Array
        (            
            [v] => 131.44            
            [p] => 
        )

    [1] => Array
        (
            [v] => 155.00
            [p] => 
        )

    [2] => Array
        (
            [v] => 168.64
            [p] => 
        )

    [3] => Array
        (
            [v] => 131.44
            [p] => 131.44
        )

    [4] => Array
        (
            [v] => 280.00
            [p] => 280.00
        )

    [5] => Array
        (
            [v] => 117.80
            [p] => 117.80
        )

    [6] => Array
        (
            [v] => 70.68
            [p] => 70.68
        )

    [7] => Array
        (            
            [v] => 58.90
            [p] => 58.90        
)

for()ループを使用して、反復ごとにこの合計を計算することは可能ですか?

4

1 に答える 1

1

編集:

更新した配列が $table と呼ばれるとします。

// $S is array for S where sums are stored
$S = array();
$S[0] = $table[0][v] - $table[0][p]; // Perform the first row
for ($i=1; $i< count($table); $i++) { // Start at 2nd and continue on
  $S[$i] = $S[($i-1)] + ($table[$i][v] - $table[$i][p]);
}

これで、すべての $S 値が入力されました。テーブルに追加する場合:

$table[0][s] = $table[0][v] - $table[0][p]; // Perform the first row
for ($i=1; $i< count($table); $i++) { // Start at 2nd and continue on
  $table[$i][s] = $table[$i-1][s] + ($table[$i][v] - $table[$i][p]);
}

はい、できます。1、2、3 の S 値が必要な場合は、はい。V は配列であり、P は配列であるため、それに応じて変更する必要があります。各 S は前の値に基づいている可能性があるため、running_sum 値を保持して、V の前の値を反復処理する必要がないようにします。 P、S の最後の値を使用します。

// $V is array for V and $P is array for P and 
// $S is array for S where sums are stored
if (count($V) == count($P)) { // Check both V and P are same length
  $running_sum = 0;
  for ($i=0; $i< count($V); $i++) {
    $running_sum += ($V[$i] - $P[$i]);
    $S[$i] = $running_sum;
  }
}

実際には実行中の合計変数は必要ありませんが、ロジックを明確にするために使用しました。ここではそれを使用していません。

// $V is array for V and $P is array for P and 
// $S is array for S where sums are stored
if (count($V) == count($P)) { // Check both V and P are same length
  $S[0] = $V[0] - $P[0]; // Perform the first row
  for ($i=1; $i< count($V); $i++) { // Start at 2nd and continue on
    $S[$i] = $S[($i-1)] + ($V[$i] - $P[$i]);
  }
}
于 2013-02-23T18:55:16.017 に答える