PHPの質問です。参考書などでempty($abc)としているものあればempty(”$abc”)としているものもありました(関数は忘れたのでemptyにしておきました)自分の環境ではどちらも動作したと思います。この2つの違いを教えてください。

 また参考書でempty(’$abc’)としているものもありました。これは自分の環境では動作しませんでした。これはphp.iniの設定でしょうか?
よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:orea No.1

回答回数10ベストアンサー獲得回数0

ポイント70pt

ダブルクォーテーションの中で変数を書いた場合、変数展開されるので、”$abc”も$abcも同じことになります。

変数と文字列を一緒に書く場合はダブルクォーテーションで囲みますが、変数だけなら囲まないのが一般的です。

’$abc’と書いた場合は、変数ではなく「$abc」という文字列を書いたことになります。

id:sleepyhead

確認してみました。’$abc’は参考書のミスのようですね。

ダブルクォーテーション、納得しました。ありがとうございました!

2004/06/06 21:26:07
  • id:i_ogi
    関数によっては挙動が違う場合もあります

    普通は同じようなもんなのですが,微妙に違っています。

    ・変数名をダブルクォーテーションで囲むということは,いちど文字型への変換をしているということになります。

    ・関数がもし,数学関数などで引数に数値を受け取る場合。結果が変わることはないと思うのですが,一度文字列に変換して,関数に渡され,さらに関数側では数値に変換しなおすと思うので,無駄な処理をすることになります。

    ・引数に配列など文字列に変換できない型のものを渡そうとするとエラーがでます。。

    ・関数が引数として渡したものが,数字であるとき,文字列であるときによって挙動が違う関数があるかもしれません。
    これはあまり意味ないといえばそうなのですが,
    $abc = 3;
    is_int($abc) == true
    is_int(”$abc”) == false
    です。

    ・指定した変数が定義されていない(文字や数字を代入していない)状態であった場合 ”$abc” は ”” (空文字列)となります。未定義の変数を渡すと警告が出る関数でも,

    実験してないのでずいぶん適当で,間違ってる点もあるかもしれませんが,変数名だけをダブルクォーテーションで囲むのは,明示的に文字型にキャストしたいときだけに使ってください。その場合でも,なるべく(string)$abcとしてキャストしてやったほうがわかりやすいと思います。
  • id:sleepyhead
    sleepyhead 2004/06/06 22:45:38
    Re:関数によっては挙動が違う場合もあります

    詳しいご説明ありがとうございます。参考にさせて頂きますm()m

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません