- ベストアンサー
phpでこれはどういう仕組になっているんでしょうか
phpでこれはどういう仕組になっているんでしょうか? echo $sumは 2+0 4+0 6+0 8+0 10+0で30ということですか? <?php $arr = [2,4,6,8,10]; $sum = 0; for($i = 0; $i <= 4; $i++){ $sum += $arr[$i]; } echo $sum."\n";
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>2+0 4+0 6+0 8+0 10+0で30ということですか? 逆! 最初に$sum=0をやってるのですから 0+2 2+4 6+6 12+8 20+10 の30です。 $sum += nは$sum = $sum+nです。 つまり、現在の$sumにnを足したものを新しい$sumとせよ! という書き方。 これを、脳みそで追いかけると上の数字になります。 ここ、何となくわかった!で、次に進むと 永遠にここに戻ってくる羽目になるので、 真面目に、じっくりわかるまで見てください。 $変数++ $変数+=n; これが、理解できずに、投げ出す人は多いです。 先ほども言った通り「時間の概念」ですよ!。
その他の回答 (4)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>つまり、現在の$sumにnを足したものを新しい$sumとせよ! >このルールを知りませんでした あぁ、そこなのか。 $a=$a+$b; は間違っても数学の式と考えず代入式だと思ってください~ 「右の物(計算が必要なら計算もして)を左へ移せ!」ですよ。 だから左辺代入式というんですが。 なので、時間的にみると $a=$a+$b; ↑ここが、一番最初の時間で、$aを覚える!。 ↑次に$bを足す。 ↑最後に覚えている加算結果をここで指定したものに入れる。 の順番。プロブラムは、時間的なスケジュールを 文字にしただけの物ですので。 例えば、 体育祭などの演技なり競技をリストにしたものを、 「プログラム」というのと同じですよ。 しかし、全部が同時には絶対に起こらないでしょう。 (例えばグラウンドを半分しか使わないから2つ同時にやる!) だとしても、その「プログラムに何時からそれをどっちでやる」 など書いてると思います。 それと全く同じなんです。 なので、物事を時系列に並べたもの=プログラムです。
お礼
ありがとうございます
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19867)
$sum += $arr[$i]; は $sum = $Sum + $arr[$i]; と同じ意味です。 つまり、このプログラムは $sum=0 ←$sumは0になる $sum=$sum+2 ←$sumは0+2で2になる $sum=$sum+4 ←$sumは2+4で6になる $sum=$sum+6 ←$sumは6+6で12になる $sum=$sum+8 ←$sumは12+8で20になる $sum=$sum+10 ←$sumは20+10で30になる と同じです。 なので、0+2+4+6+8+10を計算している事になるので、答え30が表示されます。
お礼
ありがとうございます
- AsarKingChang
- ベストアンサー率46% (3467/7474)
ここは、水に流していいですが。 この式そのものが間違ってます^^ 2から2個置きに10まで加算したのですから、 先頭の数字2と最後の数字10を加算して 12とする、そして、2~10までの距離は5 これを掛けると12x5=60 これを半分にして、30 ループしなくても、いつでも、答えは30なんですがね。 もし、 2,4,6,8,10,12なら (2+12)×6÷2=42 1,2,3,4,5,6,7,8,9,10なら (1+10)×10÷2=55 (1+10)。。。説明不要で11ですし 11×10=110。。。ある数字に10をかける場合、 計算はいらない。末尾に0を追加するだけです。 それを、2で割れば55ですから。diba? 逆にそれ以外の答えに、なりようがない^^ なので、1~10を足したとき55だったのなら、 1~100を足したら「丸が一個増えただけ」でしょ? 5050になると、計算なしで答えれるのですよ。 これ、覚えて意味があるかは、人それぞれですが。 ほとんどの計算は、計算前にすでに答えがわかってる そういう世界があるよ!ってことを、無関係に 回答しておきますね^^
お礼
ありがとうございます
- gotokin21
- ベストアンサー率0% (0/1)
違いますよ sum = 0から始まり sum += 2 ( sum = sum + 2と同等、以下略) ここでsumは2 sum += 4 ここでsumは6 sum + 6 ここでsumは12 sum + = 8 ここでsumは20 sum + 10 ここでsumは30 です
お礼
ありがとうございます
お礼
つまり、現在の$sumにnを足したものを新しい$sumとせよ! このルールを知りませんでした