###テストデータ
PHP
1$test[] = ['A', '1', '100', '2017-04-01', '09:00']; 2$test[] = ['A', '2', '150', '2017-04-01', '10:00']; 3$test[] = ['A', '1', '100', '2017-04-01', '11:00']; 4$test[] = ['A', '2', '140', '2017-04-01', '12:00']; 5$test[] = ['B', '1', '100', '2017-04-01', '09:00']; 6$test[] = ['B', '2', '140', '2017-04-01', '10:00']; 7$test[] = ['B', '2', '140', '2017-04-01', '13:00']; 8$test[] = ['C', '1', '100', '2017-04-01', '09:00'];
###やりたいこと
上記のテストデータは実際はデータベースに入っていて、それを日付で抽出したというイメージです。
並びは$test[][0] ASC, $test[][4] ASCという並び変えをしたと想定します。
1.$test[][1] === '2'の時$test[][2]の値と
その上の$test[][1]の値が'1'のデータの$test[][2]の値を引き算したい
今回Aの場合
$test[1][2] - $test[0][2] = 50
$test[3][2] - $test[2][2] = 40
2.$test[][1] === '2'があるのにその上に$test[][1] === '1'が無い場合
今回Bの場合
$test[5][2] - $test[4][2] = 40
$test[6][2] - //// = 計算できない場合は計算しない
3.$test[][1] === '1'はあるが、'2'が無い場合
今回Cの場合
//// - $test[7][2] = 計算できない場合は計算しない
4.もしも計算できたときその値が50以上かどうかで値を変える
if(計算結果 < 50) { 計算結果 = 0 }
としつつ、
計算結果A1 = 50 + A2 = 0 == 合計 50というような計算を含ませたい。
いろいろ、問題がある部分はあろうかと思いますが、とりあえずこのような状況において処理ができるかどうか?
宜しくお願いいたします。
###一応やってはみたこと
とりあえず回しながらするとして、、、
PHP
1foreach($test as $T) { 2 // まずは1の値を保存しておかないといけないので、その時に変数に入れておく 3 if($T[1] === '1') { 4 $one = $T[2]; 5 } 6 // 次に2の時はさっきとっておいた$oneと計算させる 7 if($T[1] === '2') { 8 $cal = $T[2] - $one; 9 } 10}
回答1件
あなたの回答
tips
プレビュー