PHPで変数を入れるとき、これらの用途の違いを知りたいです。
どのケースでどちらを使うのでしょうか?
echo "<a href="http://example.com/{$value}">link</a>";
echo '<a href="http://example.com/'.$value.'">link</a>';
「このケースではそっちがわかりやすいよ」とか、
「こういうときはこれはやめた方がいいよ」など、
実用的に知りたいのですが、よくわかりません…。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答8件
0
php
1echo "<a href="http://example.com/{$value}">link</a>";
文法ミスがありますね。
PHP: 文字列 - Manual
をしっかりお読みいただきたい。
php
1echo "<a href=\"http://example.com/${value}\">link</a>";
ダブルクォートが出現した時点で、文字列の終了を意味するので、
文法エラーにならないようバックスラッシュ「\」を加えてエスケープします。
ダブルクォートで括る文字列の中で変数を展開するために
$~
という書き方もありますし、${~}
という書き方もありますし、もちろん{$~}
もあります。
変数名の直後に文字列が続く場合は混乱を避けるために波括弧を駆使します。
{$~}
の書き方のほうが、複雑に式を展開しやすいですね。
--
php
1echo '<a href="http://example.com/'.$value.'">link</a>';
文字列と変数と文字列を連結してechoしてますね。
見やすさでいったらこちらの書き方が良いかもしれません。
php
1echo '<a href="http://example.com/' . $value . '">link</a>';
みたいに隙間を設けたりするかも。密集していると見逃してしまいがちだし。
でも、シングルクォートで括った文字列の中でシングルクォートを使いたい場合に困りますよね。
php
1echo 'heaven'."'".'s door.' // heaven's door. 2echo <<<EOT 3heaven's door. 4EOT;
みたいにすることも出来ます。
ヒアドキュメント文字列、ぜひ覚えてください。
先の例も
php
1echo <<<EOT 2<a href="http://example.com/${value}">link</a> 3EOT;
のように書けます。どういうふうに役立つか、
php
1$sql = <<<EOT 2SELECT user_id, user_name, address, email, age 3FROM employees 4WHERE age between {$upper} and {$lower}; 5EOT;
みたいにできます。
SQL文の中でシングルクオートやダブルクォートを使いたくなるので、
いちいちエスケープ記号をつけたり文字列の連結をして読みにくくするよりも、
ヒアドキュメントを使うとこんなにラクです。
投稿2019/05/23 12:36
編集2019/05/23 12:57退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
PHPで「 ${ } 」か「 '. .' 」か?
文法的に許可されており、それほど大きな差異は無いのでどちらでも良いです。
*${ }
は'
/"
で使用できるできないという大きな差はありますがw
*個人的には、html で"
を使用するので、phpでは'
を使用し.
連結が多いです。(まぁ、好みです)
みやすさは、若干左右されるので、場面で使い分けるのが適切だと思います。
また、${ }
を使用して見やすくなるという時は、sprintf()
も検討に入れると良いかと。
どのケースでどちらを使うのでしょうか?
質問の例示のケースでは「エスケープを行った」ということを表したいので、. エスケープ処理 .
で表現すると思います。
ただし、多少大きなシステムであれば、テンプレートエンジンを採用しているはずなので、全く異なった記法になっている可能性も高いです。
投稿2019/12/21 02:01
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
実用的に知りたい
何をもって「実用的」とするのかの判断基準を明確にされたほうが良いですが、
実務での扱いを意識したいのであれば、なるべく周囲、またはプロジェクトのルールに合わせてください。
出力結果は同じであることが分かっているわけですよね。
「適宜利用してください(コーディングスタイルが散らばらないように)」くらいでしょうか。
それよりPHPマニュアルきちんと確認する習慣をつけるほうが何倍も大事です。
投稿2019/05/23 12:29
総合スコア80850
0
自分的には両方NG
引用符の影響がでるので読みづらい
example
php
1$html = <<__HTML__ 2 3<div> 4 <a href="http://example.com/${link_path}" 5 onclick="alert('OK'); return false">${link_label}</a> 6</div> 7__HTML__ 8 9echo $html;
投稿2019/12/21 02:34
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
シングルクォーテーションの場合は、こちらを使います。
php
1echo 'this value is ' . $value;
ダブルクォーテーションで括られるか、ヒアドキュメントで指定された場合、 その中の変数はパースされます。
php
1//ダブルクォーテーション 2echo "this value is $value"; 3 4//ヒアドキュメント 5echo <<<'EOT' 6this value is {$value} 7EOT;
投稿2019/06/10 09:08
総合スコア245
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
大雑把に言って、書く人の好みによるんじゃないかなあ。
チームで開発する際のコーディング規約があれば
そちらに従うべき話ではありますね。
あと、IDE によってはどちらかの方が便利かもしれません。
ちなみに自分の好みは後者です。
また、長い文字列を書く場合にはこんな感じで
php
1echo '<a href="http://example.com/' 2 . $value 3 . '">link</a>';
投稿2019/05/23 13:57
総合スコア7458
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。