PHPの文字列判定

PHPの文字列判定

PHPPHPの文字列判定

社内向けに作ったちょっとした Web アプリで、データ出力がおかしい現象に遭遇しました。想定より、1 件だけ余分にデータ出力されているというバグです。

ソースを追ってみたところ、MySQL から取得したデータをループさせて加工しているところで空文字を判定している部分がありました。この判定では、厳密に言うと数値と文字列を比較するパターンとなっていたので、空でも 0 でも該当してしまっていたわけです。

if ($a == "") {
  echo "空文字でも0でも該当";
}

Perl でも同じですが、文字列判定にしろ数値判定にしろ、スクリプト言語は融通が利く分、罠も多いです。結果的に、strcmp() 関数を使って対応しましたが、スクリプト言語も型を意識しながら組んでいかないとダメですね。セキュリティ面もそうですが、気軽に実行できる環境こそ、細心の注意が必要です。

[PHP文字列判定]
if (strcmp($a, $b) == 0) {
  echo "文字列";
}

[Perl文字列判定]
if ($a eq $b) {
  print "文字列";
}

PHP の場合、=== や !== を使うことで、値と型のマッチングを判定することもできます。

最終更新日:

関連記事

人気記事

新着情報