2016-07-13 2 views
0

私はPHPマニュアル(http://php.net/manual/en/language.types.string.php)のStringsセクションを辿っていましたが、二重引用符または一重引用符で囲まれた文字列がそれぞれ同じことをするときになぜ新しいheredocまたはnowdoc文字列構文を作成するのか理解できませんでした。heredocと二重引用符で囲まれた文字列とPHPでnowdocや一重引用符で囲まれた文字列との違いは何ですか?

+2

ほとんどがここにhttp://stackoverflow.com/questions/3446216/what-is-the-difference-between-single-quoted-and-double-quoted-strings-in-php?rq=1 –

+0

を参照してください。なぜなら、何かが多くの行にまたがって、おそらくはタブとあらゆる種類の混乱を含んでいるときに、二重引用符よりも明確に定義された文字列の終わりを見つける方が簡単だからです。一般的には、私は言いがちです:複数の行にまたがる文字列がある場合は、それらをファイルに抽出することを検討してください。彼らはコードを読みやすくしません。 –

+0

飛行機と列車が目的地に到着します。それは余計なことですか? – arkascha

答えて

0

主な違いは、heredocとhowdocでは引用符をエスケープする必要がないということです。これは、文字列の大きなブロックを読みやすくします。たとえば、次のように

$html = "<p class=\"first\">$text</p> 
     <p class=\"second\"$moretext</p>"; 

ドキュメントから

$html = <<<HTML 
<p class="first">$text</p> 
<p class="second">$moretext</p> 
HTML; 

対:

ヒアドキュメントのテキストは 二重引用符なしで、ちょうど二重引用符で囲まれた文字列のように動作します。これは、heredoc内の引用符は、 をエスケープする必要はないことを意味します。

+0

これは「読みやすく」の唯一の違いですか?ダブルクォートでも、マルチプルラインにまたがることができますので、読みにくいとは思いません。エスケープすると、二重引用符の終了を意味するうまく機能していないように見えます。 –

+0

はい、個人的な好みの問題です。唯一の技術的な違いは、引用符のエスケープです。 –

+0

実際、上記の例では_different_結果が得られます。可能ですが、通常の二重引用符定義を使用して同じ文字列を正確に定義するのは厄介です。 – arkascha

関連する問題