- 締切済み
CakePHPでのemptyの 0 判定に関して。
どなたか、熟練のプログラマーさんorSEさん、 お知恵の拝借をお願い致します。 現在、CakePHPで開発をしているわけですが、 emptyに 0 や '0' を判定させた際、 falseを返してしまうのに非常に困っています。 現在やろうとしている判定が下記のとおりです。 ・nullが来たとき、変数の宣言が無い時など値が無ければエラー処理 ・数字や文字列が来た時は通常処理 ・数字の0や文字列の0が来た時も通常処理 なのですが、なかなか良い判定文が書けないのです。 emptyで判定すると0が処理から抜けてしまい、 抜けた0を拾うために else if( $変数名 === '0' || $変数名 === 0)などとすると $変数名の宣言が無い場合にワーニングが出てしまいます。 原則として、エラーを吸収する @ はPMの指示で使用が禁止されているため使えません。 なにか上手い処理の指定の仕方があれば教えてください。 一番ベストは、emptyの処理をオーバーライドして 0 or '0' 判定時にtrueを返すことなのですが、 オーバーライドのやり方が分からないのでそれも現状では出来ません。 ネットで色々読み漁りましたが、解決方法が見つかりませんでした。 どなたか、良い解決方法がありましたらご教授願います。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hogehoge78
- ベストアンサー率80% (433/539)
CakePHPのemptyというのがよくわかりませんが、 自前のチェックメソッドを作成してるということですか。 また、CakePHPは1.2でいいんでしょうか。 >emptyで判定すると0が処理から抜けてしまい、 >抜けた0を拾うために >else if( $変数名 === '0' || $変数名 === 0)などとすると >$変数名の宣言が無い場合にワーニングが出てしまいます。 とりあえず変数が宣言されているか否か、に関しては、issetというものがあります。 <?php if(isset($hoge)){ echo "hogeは宣言されてます"; }else{ echo "hogeは宣言されてません"; } ?> これで$hogeが宣言されていない場合、”hogeは宣言されていません” と表示されます。