とぎぷろべい

包丁研ぎとプログラミングと米国株投資についてのなんやかんや

ヒアドキュメントとNowdocについて(PHP)

f:id:feci:20210622155818j:plain

PHP7

 

PHP7.4.1におけるPHPのヒアドキュメントについて。

<?PHP

echo <<< EOT //①
テキスト\n
テキスト
テキスト
EOT;

echo<<<8OT //②
テキスト
テキスト\n
テキスト
8OT;

echo <<< "E_T" //③
テキスト
テキスト
テキスト\n
E_T;

echo
 <<< 8OT //④
テキスト\n
テキスト
テキスト
8OT;

このプログラムの出力結果は以下のとおりです。

 

①の出力

 テキスト
 
 テキスト
 テキスト

 

②の出力

 テキスト
 テキスト
 
 テキスト

 

③の出力

 テキスト
 テキスト
 テキスト //この次の行に改行がはいる。

 

④の出力

 エラー  //文字列の頭に数値を使っているため。

 

 

ヒアドキュメントはechoまたはprintの後ろに <<< を付けることで使用できます。

EOTは「end of text」の略で、ヒアドキュメントによく使われる文字列です。

ヒアドキュメントを終わらせたいときは最後の文字列の1つ下の行に EOT; と記述すればOKです。

 

ちなみにEOTとEOT;の部分は、頭に数値がこなければ、べつにどんな文字列でもかまいません。

ただし、<<<○○と○○;の○○の部分の文字列は一致させないといけません。

 

あとは、””は基本的には記述しないほうがいいらしいです。

あと、EOTに該当する部分の文字列は、半角大文字のアルファベットを使うのが暗黙の了解らしいです。

 

あと、ヒアドキュメント内の文字列の各行のおしりには初期値として改行がついています。

しかしEOT;のひとつ上の行のおしりだけは、初期値では改行がついていません。

この部分をもし改行したのであれば、\nが必要になります。

 

 

Nowdocについて。

<?PHP

echo <<< '8OT' //①
テキスト\n
テキスト
テキスト
8OT;

echo<<<'EOT' //②
テキスト\n
テキスト
テキスト
EOT;

echo <<< 'E_T' //③
テキスト\n
テキスト
テキスト
E_T;

echo <<< '8OT' //④
テキスト\n
テキスト
テキスト
8OT;

このプログラムの出力結果は以下のとおりです。

 

①の出力

 テキスト/n
 テキスト
 テキスト

 

②の出力

 テキスト
 テキスト/n
 テキスト

 

③の出力

 テキスト
 テキスト
 テキスト/n

 

④の出力

 エラー  //文字列の頭に数値を使っているため。

 

 

Nowdocは、ヒアドキュメントの””がはいる部分に’’を入れることで使用できます。

ご覧のように、Nowdocではエスケープシーケンスは使えません。

 

そのほかの挙動については、だいたいヒアドキュメントと同じような感じです。

 

 

以上です。