PHPの文字列判定
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2009-10-05
社内向けに作ったちょっとした Web アプリで、データ出力がおかしい現象に遭遇しました。想定より、1 件だけ余分にデータ出力されているというバグです。
ソースを追ってみたところ、MySQL から取得したデータをループさせて加工しているところで空文字を判定している部分がありました。この判定では、厳密に言うと数値と文字列を比較するパターンとなっていたので、空でも 0 でも該当してしまっていたわけです。
if ($a == "") {
echo "空文字でも0でも該当";
}
Perl でも同じですが、文字列判定にしろ数値判定にしろ、スクリプト言語は融通が利く分、罠も多いです。結果的に、strcmp() 関数を使って対応しましたが、スクリプト言語も型を意識しながら組んでいかないとダメですね。セキュリティ面もそうですが、気軽に実行できる環境こそ、細心の注意が必要です。
[PHP文字列判定]
if (strcmp($a, $b) == 0) {
echo "文字列";
}
[Perl文字列判定]
if ($a eq $b) {
print "文字列";
}
PHP の場合、=== や !== を使うことで、値と型のマッチングを判定することもできます。
関連記事
上記の記事に関連する記事(最新の10件)です。


