前の記事で複数行の文字列を表示するやり方を紹介しました。
そしてPHPには改行を含む複数行の長い文字列代入する方法もいろいろあります。
という訳でその方法とコード例についていろいろ紹介してきます。
複数行を代入する方法
PHPで複数行を代入する方法は次の3つ
文字列全体をクォートで囲って代入
一番オーソドックスで分かりやすいやり方が文字列をクォートで囲んで代入です。
例えば次みたいな感じで
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** シングルクォートで囲む */ $help_lyric = ' Help, I need somebody, Help, not just anybody, Help, you know I need someone, help. '; /** あるいはダブルクォートで囲む */ $help_lyric = " Help, I need somebody, Help, not just anybody, Help, you know I need someone, help. "; |
シングルクォート(')またはダブルクォート(")のどちらかで囲んで代入するだけです。
ただこの方法だと次のような点で不便です。
- 単純に文字列しか代入できない
- 変数とかを展開できない
当然のことながらクォート内では変数は展開できません。
純粋に長い文章を代入するときにこの方法が向いてると思います。
ドット(.)演算子で文字列を結合して代入
次の方法はドット(.)演算子で長い文字列を代入する方法です。
例えば次がそのコード例
1 2 3 4 5 |
$help_lyric = 'Help, I need somebody,' . 'Help, not just anybody,' . 'Help, you know I need someone,' . 'help.'; |
こういう風に文字列同士を ドット(.) で結ぶことで連結させることができます。
あとドット記号は行の初めより最後に合った方が見やすいですね。個人的には
また、この方法のいいところはスペースを使って文字列を整形しやすいことです。
あとドット記号だと変数を使うこともできます。例えば次みたいな感じで
1 2 3 4 5 6 7 |
$help = 'Help'; $help_lyric = $help . ', I need somebody,' . $help . ', not just anybody,' . $help . ', you know I need someone,' . 'help.'; |
ただ文字列をクォートで囲むよりは見やすくなります。
ちなみに +(プラス)記号 で文字列は結合できないので要注意です。
他の言語を使ってるとついついやってしまいますが、文字列の場合は必ずドット(.)を使わなくてはなりません。
ヒアドキュメントを使う
最後はヒアドキュメントを使う方法です。
ヒアドキュメント言うと echo とかの表示で使うイメージですが代入にも使えるんですよね。
例えば次がヒアドキュメントで変数に複数行を代入してるコードです。
1 2 3 4 5 6 |
$help_lyric = <<<EOM Help, I need somebody, Help, not just anybody, Help, you know I need someone, help. EOM; |
EOMからEOMの間までの文字列が代入されます。
ちなみに最後のEOMは別行に書いて絶対に最初にスペースを含んではいけません。
完全に独立した行に書く必要があります。
このヒアドキュメントを使った代入の何がいいかっていうと変数が使えることです。
例えば変数代入の例が次のようなコード
1 2 3 4 5 6 7 8 |
$help = 'Help'; $help_lyric = <<<EOM {$help}, I need somebody, {$help}, not just anybody, {$help}, you know I need someone, help. EOM; |
変数名を {} で囲むことでその変数を展開できます。
あれでもこれってドット記号使っても同じじゃん・・・
と思ってしまいますが実はやり方を工夫すれば次のようなものも展開可能です。
- 計算式みたいな式
- クラス内変数
詳しくはヒアドキュメント内でクラス変数・関数・式などを書く方法に書いたのでそちらをどうぞ
ここまでのまとめ
ここまでで紹介した複数行文字列の代入方法は次の3つ
- クォートで全部囲んで代入
- ドット記号で結んで代入
- ヒアドキュメントで代入
僕の知ってる限りではこの3つです。(もしかしたら他にも方法があるかも)
それでこの3つをどう使い分けるかってことですよね。
個人の好みによりますが効率がいいのは僕の場合は次のような場面で使い分けてます。
- クォートで全部囲んで代入
⇒ 引用文とか純粋に長い文字列を代入したい場面で使用
- ドット記号で結んで代入
⇒ 文章をインデントとかで整形して変数を使いたい場面で使用
- ヒアドキュメントで代入
⇒ 変数以外にクラス変数とか式とかを展開したい場面で使用
ただ1つめのクォートで全部代入はほとんど使いませんね。
実際の開発現場でも2番目か3番目の方法がよく使われると思います。
という訳で複数行文字列の代入方法をまとめてみました。
ではでは~('ω')ノ