ECHOはかく語りき
ふざけたタイトルを付けてるが、内容は少し真面目である。画面へ出力する構文echoについてである。世の中さまざまなプログラミング言語があるが、プログラミング言語を学ぶとき、いちばん最初に学ぶ基本文法として紹介されるのが、画面へ出力するための基本となる構文である。
例題としてよく”Hello World”が使われることが多い。というか伝統みたいになっている。この”Hello World”の起源は、1967年、BCPLというプログラミング言語だといわれている。その後、ブライアン・カーニハンとデニス・リッチーによって書かれた「プログラミング言語 C」という書籍の中で紹介され、広まることとなった。
さて、PHPには、画面に出力する構文は、2つあるechoとprintである。どちらも同じ結果になるが、echoが使われることが一般的である。printとechoの違いは、戻り値があるかどうかの違いで、PHPのマニュアルによれば、printは常に1という値を返すということになっている。
ここでは、echoについて書いてみよう。基本的な書き方としては、
echo "Hello World";
というように、出力する文字列をダブルクォーテーション記号で囲む。変数と併せて表示したい場合は、
$a = 10000; echo "所持金は" . $a . "円です。";
となる。ピリオド記号を使わない書き方もある。
$a = 10000; echo "所持金は{$a}円です。";
変数名を{}で囲むやり方だ。どちらがよいかという選択肢はない。考えること自体ムダなことなので、好きな方を使えばよい。そもそも、なんでそんなこと考えるんだい?printでも同じようにできるけど、printは、ほとんど使われていないような気がする。
echoやprintは改行コードは出力されない。ブラウザへの出力を前提としているためであろう。改行コードを出力しても何の意味もないのである。あえて改行コードを出力するには、エスケープ文字を使って次のように書く。
echo "Hello World\n"; // "\n"が改行に当たる部分
または、
echo "Hello World" . PHP_EOL;
でもよい。
最後にもうひとつ紹介しよう。あまり使われることはないが、シングルクォーテーション記号を使って、表示するやり方である。
echo 'Hello World';
シングルクォーテーションとダブルクォーテーションでは動作に違いがある。たとえば、Pythonでは、シングルクォーテーションとダブルクォーテーションのどちらを使っても同じ動作するが、PHPでは同じ動作はしない。
$a = 10000; echo "所持金は{$a}円です。\n"; echo '所持金は{$a}円です。\n';
同じ結果になりそうではあるが、
所持金は10000円です。 所持金は{$a}円です。\n
という結果になる。シングルクォーテーションで囲むと、なんであれそのままの形で表示する。変数の内容と改行コードを表示するには、次のようにコードを書けばよい。
echo '所持金は' . $a . '円です。' . "\n";
プログラミング言語によって、画面に出力する構文はさまざまである。短いprintから、echo、printf、write、System.out.Printlnまである。C++なんかになると、cout << “Hello World” << endlなんて書き方をする。最も基本的な構文だが、眺めてみると結構面白いものがある。
なんでこんな記事書こうと思ったかは、「そういえばechoに””と’’があったよな」と思いついたからである。その以外何もないのである。