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に””と’’があったよな」と思いついたからである。その以外何もないのである。