- ベストアンサー
ダブルクォーテーションで囲まないと表示できない変数
ネットから拾ってきたサンプルソースをphp5.2.3を使って試行錯誤中です。 今回、メール受信のソースを試しており、 exitに変数を添えて変数の確認をしていたところ、 8行目は変数が表示できず、 9行目のようにダブルクォーテーションで囲むと表示できる といった変数がいくつかあることに気付きました。 10行目などの変数は、ダブルクォーテーションなしでも表示できますし、 print関数だと、ダブルクォーテーションのあるなしにかかわらず表示できています。 どのような変数でおこる現象なのか、知りたいと興味がわきました。 ご存知の方がいらっしゃいましたら、ご回答よろしくお願い致します。 ソース概略 (文頭の数字は行数,$host/$user/$passは事前に代入済) 01 $sock = fsockopen($host, 110, $err, $errno, 10) or die("サーバーに接続できません"); 02 $buf = fgets($sock, 512); 03 if(substr($buf, 0, 3) != '+OK') die($buf); 04 $buf = _sendcmd("USER $user"); 05 $buf = _sendcmd("PASS $pswd"); 06 $data = _sendcmd("STAT"); 07 sscanf($data, '+OK %d %d', $num, $size); // 以下、必要なもの以外はコメントアウトして確認 08 exit($num); //表示できない 09 exit("$num"); //表示できる 10 exit($host); //表示できる 11 print($num); //表示できる 12 print("$num"); //表示できる
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
単に「exit」に仕様では?exit("1")はstringですが、exit(1)ならintegerですから。 http://www.php.net/manual/ja/function.exit.php iPHP >= 4.2.0 ではstatus が integer の場合それを表示しません。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
http://www.php.net/manual/ja/function.exit.php 引数がintの場合は、エラーコードを返すとあります。 exit("$num"); というのは$numをパースして、文字列として判定されています
お礼
先の方の回答で十分理解できましたが、 yambejpさんの解説で、さらに理解を深めることができました。 どうもありがとうございました。
お礼
お恥ずかしいことに、「仕様」ということに目が向きませんでした。 そうですよね、printでは表示される時点で、気付くべきでした。 納得です。どうもありがとうございました。