- ベストアンサー
echo $a++とecho ++$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; ?> で実験してみれば判るでしょう。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
疑問に思ったら、人に聞く前に、まずはマニュアルを読みましょう。 PHPの勉強の前に「マニュアルの読み方」を覚えましょう。 マニュアルを読んで、なお、わからないことがあるのなら、その時点で質問しましょう。 人に聞いたものはすぐに忘れます。 自分で調べたことは覚えていられるものです。 「わからなければ聞けばいいや」という姿勢では、いつまで経っても習得はできません。 マニュアルの読み方で覚えておくべきことは「直接探せないときは、関連する項目から手繰る」ことです。 こういう記号は、検索してもうまく見つけることができません。 そこで、世間一般でこういう計算するものを何と呼ぶかを考えます。 算数では、こういう計算するようなものを「式」と読んでいますね? そこでマニュアルから「式」について説明しているものが無いか探すと 『式』 http://www.php.net/manual/ja/language.expressions.php が見つかります。 これを読んでいくと > PHP と他の多くの言語のユーザーは、variable++ や variable-- といった表記法に慣れていることでしょう。 > これらは、加算子および減算子です と探していた「++」についての説明がありました。 「加算子および減算子」の部分がリンクになっています。 『加算子/減算子』 http://www.php.net/manual/ja/language.operators.increment.php > ++$a 前置加算子 $a に 1 を加え、$a を返します。 > $a++ 後置加算子 $a を返し、$a に1を加えます。 と説明が書いてあります。その後にサンプルコードもあります。 また > PHP は C 言語形式の加算子/減算子(前置・後置ともに)をサポートします。 とあります。元々C言語で使われていたものだとわかります。 ということは「C言語 加算子」で検索してC言語での解説を読む、というのも理解を深めるのに役立つだろう、と考えられます。 日本語でピンとくるものがなければ、英語で探しましょう。 コンピュータ用語は英語が基になっているものがほとんどです。 上記 PHP のマニュアルで言語を「 English」に変えると、「加算子/減算子」は「Incrementing/Decrementing Operators 」だとわかります。 「Incrementing」や「インクリメント」で検索すると、また違ったサイトを見つけることができます。 あとは、「実際にプログラムを動かしてみる」ことです。 今回の例なら、結果が違うことが一目瞭然です。 その結果を見て「なぜそうなるのですか?」という質問をするなら、まだマシです。 実行もしない、マニュアルで調べもしない、で質問して、回答が来るまで数日勉強が止まる、では、習得できるわけがありません。
関連するQ&A
- echo (float)'1e2foo', PHP
echo (float)'15foo', PHP_EOL; echo (float)'15.33foo', PHP_EOL; echo (float)'1e2foo', PHP_EOL; echo (float)'foo', PHP_EOL; 以上参考書を転記しました 試しに echo '<pre>'; echo (float)'15', PHP_EOL; echo (float)'15.33', PHP_EOL; echo (float)'1e2', PHP_EOL; echo (float)'', PHP_EOL; echo '</pre>'; とfooを省きました、二つのプログラムの実行結果は 以下ですがと同じです。 15 15.33 100 0 一つ目の質問です。 なぜ、参考書はfooをあえて入れてのでしょうか? 二つ目の質問です。 1e2を1e3にすると結果が1000になります。 1eて何ですか!? 宜しくお願いします。
- 締切済み
- PHP
- ブラウザ上に出せますか!?
echo (float)'15foo', PHP_EOL; // 15 echo (float)'15.33foo', PHP_EOL; // 15.33 echo (float)'1e2foo', PHP_EOL; // 100 (1e2) echo (float)'foo', PHP_EOL; // 0 以上ですが、 ブラウザ上に結果を出せますか!? もし、ブラウザ上に出すには、後!どんなプログラムが必要ですか!? 分かりません、宜しくお願いします。
- ベストアンサー
- PHP
- $a = new SomeClass();
<html> <head> <meta "charset=utf-8" /> <title>P76instanceof.php</title> </head> <body> <?php class SomeClass { } $a = new SomeClass(); if ($a instanceof SomeClass){ echo'$aは SomeClass のインスタンスです',PHP_EOL; } ?> </body> </html> 以上ですが! $a = new SomeClass();のnewの役割を教えてくだい よろしくお願いします。
- ベストアンサー
- PHP
- "print"と"echo"の違いを教えてください
PHPを始めた初心者なのですが、"print"と"echo"の使い道の違いがよく解りません。 調べてはみましたが、"print"は『文字列を出力する』、"echo"は『1つ以上の文字列を出力する』と書いてあり、意味が良く解りませんでした。 どなたか、ご存知でしたらご指導宜しくお願い致します。
- 締切済み
- PHP
- echoの出力がうまくできない
echoを使ってできないことがあり、自力解決ができないでいます。 お分かりになる方いらっしゃれば解決方法をご教授願います。 【やりたいこと】 WordPressでphpをカスタマイズしています。 その中で下記のことをやろうとしています。 echo '<a href="' . the_permalink() . '">' . the_title() . '</a>'; 【期待する結果】 下記のような感じです。WordPressの関数?の戻り値が展開されて <a href="aaa.html">bbb</> 要はリンクが張られている状態を作りたいのですが、現在の結果は下記のようになります。 aaa.htmlbbb とリンクが張られずにそのまま文字列が表示されてしまいます。 Fifrebugで確認すると、なぜか上記文字列の下に <a href=""></a> と入れられているのがわかりました。 試しにWordPressの関数の戻り値を使わず下記(ハードコード)にすると echo '<a href="' . 'zzz.html' . '">' . 'test' . '</a>'; ただしくリンクが張られています。 また関連するかはわかりませんが、戻り値の扱い方がおかしいのかも判断して 下記のようにしました。 $title = the_title(); 変数に入れるつもりが、なぜかこれが、echoがされた状態になり、(上記のコードだけで)プレビュー画面でタイトルが表示されています。 他にはヒアドキュメントでやっても同じような結果となり、原因がわかりません。 もともとは <a href="<?php the_permalink( ); ?>"><?php the_title(); ?></a> で書いてあったコード(正常に動作)をIF文などの条件が必要になり、(上記の書き方では私の知識ではわかりづらく) <?php ?> のようなブロック単位?に書き直しているタイミングで発生しました。 当方はPerl等メインでやっていますが、PHPは初心者です。ネットで検索したサンプルなどを手直しして使っているレベルです。 識者の方お願いします。
- ベストアンサー
- PHP
- echoとprintの違い
echoとprintの違いについて質問します。 echoは結果を返すのに対してprintは返さないということが、サイトで説明されていますが、この説明の結果とはなんなのでしょうか? どちらも画面に表示させるから結果はどちらも返ってきていると思うのですが??
- ベストアンサー
- PHP
- PHPのechoについて
PHPのechoについて PHPのechoの中でクォーテーションを使うにはどうしたらいいのですか? クォーテーションを画面に表示したいです。 ↓こんな感じです。 <?php echo "ここにクォーテーションをいれたいです。" ?>
- ベストアンサー
- PHP
- $argv[1]) && $argv[1]・同じ
以下のプログラムですが! <html> <head> <meta "charset=utf-8" /> <title>論理演算子</title> </head> <body> <?php if(isset($argv[1]) && $argv[1]) { echo '与えられた引数は真です',PHP_EOL; } else{ echo '引く数が与えられていないか、与えられた引数が真ではありません' ,PHP_EOL; } ?> </body> </html> 以上のプログラムの実行結果は以下となりました。 引く数が与えられていないか、与えられた引数が真ではありません 以上の実行結果は”真でありません”と出ています。 $argv[1]) && $argv[1]・・・&&は理論積の、両辺は同じなのでtrueならばtrueの真だから、 "与えられた引数は真です"と出るのではないんでしょうか!? 以上よろしくお願いします。
- ベストアンサー
- PHP
お礼
簡潔明瞭な御回答誠にありがとうございました。 http://www.php.net/manual/ja/language.operators.increment.php 以上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 の中身を出力