2007年12月05日
なぜ変数にNullが入るの?原因は・・・

ちょいとPHPの技術的な話(?)を一つ。
今、PHPの開発を行っているのですが、あるところで不具合が改善されなくて1時間ほど費やしてしまいました。ちょっと悔しかったので記事にしてみます。
まず、下記プログラムを見てください。
<?phpさて、上記のプログラムを実行すると何と表示されるかはPHPをしたことがある方ならわかると思います。おそらく皆さんの答えは
$hoge = "AAA";
$foo = "BBB";
var_dump($hoge,$foo);
?>
string(3) "AAA"だと思います。しかし、実は違います。この実行結果は
string(3) "BBB"
string(3) "AAA"となります。この問題を解決するために1時間近くもかかってしまいました。(実際のプログラムとは異なります)
NULL
その答えは以下に。
おかしいですよね。
$hogeの「AAA」は当たり前ですが、$fooはNullと返ってきます。通常なら「BBB」と返ってくるはずなのにNullと帰ってくるのです。つまり、変数$fooに値が入らないのです。
どうして?
って、わかりますか?実は答えは誰もが経験したことがあると思いますが、$fooの「=」の前の空白が全角スペースなのです。
「なんだ~」でしょ。けど、経験したこともあるのでは?
通常、秀丸などのエディタを使用していれば全角空白を「_」などの表示にしておくと思うのですが、今回はそれをしていませんでした。「していない」というよりもその機能が無かったのです。
今現在、PHPの開発ではPHPのEclipse、PDT(Eclipse PHP Development Tools)を使用しているのですが、このEclipseに全角スペースを特殊文字で表示する機能が無いのです。(T_T)
けど、同じような経験をしたくは無いので何かないものかと探してみたところ見つかりました。それは「JStyle」というプラグインです。これを使用することによって全角スペース、タブ、改行、半角スペースを特殊文字で表示することができます。
あ~つまらないことで時間をかけてしまいました。けど、これも一つの経験ですね。(^_^;)
JStyleプラグイン - EclipseWiki
$hogeの「AAA」は当たり前ですが、$fooはNullと返ってきます。通常なら「BBB」と返ってくるはずなのにNullと帰ってくるのです。つまり、変数$fooに値が入らないのです。
どうして?
って、わかりますか?実は答えは誰もが経験したことがあると思いますが、$fooの「=」の前の空白が全角スペースなのです。
「なんだ~」でしょ。けど、経験したこともあるのでは?
通常、秀丸などのエディタを使用していれば全角空白を「_」などの表示にしておくと思うのですが、今回はそれをしていませんでした。「していない」というよりもその機能が無かったのです。
今現在、PHPの開発ではPHPのEclipse、PDT(Eclipse PHP Development Tools)を使用しているのですが、このEclipseに全角スペースを特殊文字で表示する機能が無いのです。(T_T)
けど、同じような経験をしたくは無いので何かないものかと探してみたところ見つかりました。それは「JStyle」というプラグインです。これを使用することによって全角スペース、タブ、改行、半角スペースを特殊文字で表示することができます。
あ~つまらないことで時間をかけてしまいました。けど、これも一つの経験ですね。(^_^;)
JStyleプラグイン - EclipseWiki
Category is PHP.
<%PingExcerpt%>
<%PingBlogName%> at <%PingDateTime%>