重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

どなたか、熟練のプログラマーさんorSEさん、
お知恵の拝借をお願い致します。

現在、CakePHPで開発をしているわけですが、
emptyに 0 や '0' を判定させた際、
falseを返してしまうのに非常に困っています。

現在やろうとしている判定が下記のとおりです。

・nullが来たとき、変数の宣言が無い時など値が無ければエラー処理
・数字や文字列が来た時は通常処理
・数字の0や文字列の0が来た時も通常処理

なのですが、なかなか良い判定文が書けないのです。

emptyで判定すると0が処理から抜けてしまい、
抜けた0を拾うために
else if( $変数名 === '0' || $変数名 === 0)などとすると
$変数名の宣言が無い場合にワーニングが出てしまいます。

原則として、エラーを吸収する @ はPMの指示で使用が禁止されているため使えません。

なにか上手い処理の指定の仕方があれば教えてください。

一番ベストは、emptyの処理をオーバーライドして
0 or '0' 判定時にtrueを返すことなのですが、
オーバーライドのやり方が分からないのでそれも現状では出来ません。


ネットで色々読み漁りましたが、解決方法が見つかりませんでした。

どなたか、良い解決方法がありましたらご教授願います。

A 回答 (1件)

CakePHPのemptyというのがよくわかりませんが、


自前のチェックメソッドを作成してるということですか。
また、CakePHPは1.2でいいんでしょうか。


>emptyで判定すると0が処理から抜けてしまい、
>抜けた0を拾うために
>else if( $変数名 === '0' || $変数名 === 0)などとすると
>$変数名の宣言が無い場合にワーニングが出てしまいます。

とりあえず変数が宣言されているか否か、に関しては、issetというものがあります。

<?php
if(isset($hoge)){
echo "hogeは宣言されてます";
}else{
echo "hogeは宣言されてません";
}

?>
これで$hogeが宣言されていない場合、”hogeは宣言されていません”
と表示されます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!