プロが教える店舗&オフィスのセキュリティ対策術

<?php
$a = 10;

echo $a++,PHP_EOL;

------------------------------

 <?php
$a = 10;

echo ++$a, PHP_EOL;

-------------------------------
 以上の計算結果は同じですか?
  もし同じでしたら、また悩みが増えます。
 よろしくお願いします。

A 回答 (2件)

計算結果は、どちらも echo の次行では $a の中身は 11 です。



しかし、echo で出力される結果は前者は 10 、後者は 11 になります。
前者は $s の中身を出力した後に足し算が行われます。
後者は足し算を行った後に $a の中身を出力します。

<?php
$a = 10;
echo $a++,PHP_EOL;
echo $a,PHP_EOL;

$a = 10;
echo ++$a,PHP_EOL;
echo $a,PHP_EOL;
?>

で実験してみれば判るでしょう。
    • good
    • 0
この回答へのお礼

 簡潔明瞭な御回答誠にありがとうございました。
 http://www.php.net/manual/ja/language.operators. …
 以上URLのhpと御回答を比較した場合

  「地元との人が地元の地図を描くと土地勘のない人から見れば非常に分かり辛い」
  以前聞いた話ですが・・それと同様は以下の説明です。
 
 ++$a前置加算子$a に 1 を加え、$a を返します。
 $a++後置加算子$a を返し、$a に1を加えます。
 以上説明は
 ”地元との人が地元の地図を描いた”と同様に思えるのは私だけでしょうか!?
 普通読んでもなんことは分からないと思います。
 
 御回答下さった内容は明瞭でした。URLのhpは分かり辛いので、できるのであれば
 御回答を追加したいところですが^^
 
 以下今後の参考、分かりやすいと思いますが


<html>
<head>
<meta "charset=utf-8" />
<title>加算子</title>
</head>
<body>
<?php
$a = 10;
echo $a++,PHP_EOL;
echo $a,PHP_EOL;

$a = 10;
echo ++$a,PHP_EOL;
echo $a,PHP_EOL;

?>
</body>
</html>

結果は以下です。

10 11 11 11
echo $a++,
前者は $s の中身を出力した後に足す

echo ++$a,
後者は足し算を行った後に $a の中身を出力

お礼日時:2014/04/05 15:51

疑問に思ったら、人に聞く前に、まずはマニュアルを読みましょう。


PHPの勉強の前に「マニュアルの読み方」を覚えましょう。
マニュアルを読んで、なお、わからないことがあるのなら、その時点で質問しましょう。

人に聞いたものはすぐに忘れます。
自分で調べたことは覚えていられるものです。
「わからなければ聞けばいいや」という姿勢では、いつまで経っても習得はできません。


マニュアルの読み方で覚えておくべきことは「直接探せないときは、関連する項目から手繰る」ことです。


こういう記号は、検索してもうまく見つけることができません。
そこで、世間一般でこういう計算するものを何と呼ぶかを考えます。

算数では、こういう計算するようなものを「式」と読んでいますね?
そこでマニュアルから「式」について説明しているものが無いか探すと

『式』 http://www.php.net/manual/ja/language.expression …

が見つかります。

これを読んでいくと
> PHP と他の多くの言語のユーザーは、variable++ や variable-- といった表記法に慣れていることでしょう。
> これらは、加算子および減算子です
と探していた「++」についての説明がありました。
「加算子および減算子」の部分がリンクになっています。

『加算子/減算子』 http://www.php.net/manual/ja/language.operators. …
> ++$a 前置加算子 $a に 1 を加え、$a を返します。
> $a++ 後置加算子 $a を返し、$a に1を加えます。
と説明が書いてあります。その後にサンプルコードもあります。

また
> PHP は C 言語形式の加算子/減算子(前置・後置ともに)をサポートします。
とあります。元々C言語で使われていたものだとわかります。
ということは「C言語 加算子」で検索してC言語での解説を読む、というのも理解を深めるのに役立つだろう、と考えられます。

日本語でピンとくるものがなければ、英語で探しましょう。
コンピュータ用語は英語が基になっているものがほとんどです。
上記 PHP のマニュアルで言語を「 English」に変えると、「加算子/減算子」は「Incrementing/Decrementing Operators 」だとわかります。
「Incrementing」や「インクリメント」で検索すると、また違ったサイトを見つけることができます。






あとは、「実際にプログラムを動かしてみる」ことです。
今回の例なら、結果が違うことが一目瞭然です。
その結果を見て「なぜそうなるのですか?」という質問をするなら、まだマシです。
実行もしない、マニュアルで調べもしない、で質問して、回答が来るまで数日勉強が止まる、では、習得できるわけがありません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!