1

奇妙な問題があります。

これを行う関数が値を返す場合、

public function isVipCustomer($customer_id){
        $cus_vip_id=FALSE;
        $sql="SELECT customerid FROM customers WHERE is_vip='1' 
                AND customerid='".$customer_id."' LIMIT 0,1 ";  
        $result= $this->db->query($sql);

        while($row=mysqli_fetch_assoc($result)){
            $cus_vip_id=(int)$row['customerid'];    
        }

        if($cus_vip_id!=0)
            return TRUE;
        else
            return FALSE;

    }

私が電話するとき

$customer_id=13;
echo $collection->isVipCustomer($customer_id);

trueの場合は1を出力しますが、falseの場合は空であり、0の出力を期待します。

なぜ?

4

3 に答える 3

3

PHPのドキュメントから:

ブール値のTRUE値は、文字列「1」に変換されます。ブール値のFALSEは、 ""(空の文字列)に変換されます。これにより、ブール値と文字列値の間で相互変換が可能になります。

http://www.php.net/manual/en/language.types.string.php

タイプとともに戻り値を出力するには、var_dump($myVar)代わりにを使用してみてください。

于 2012-04-18T05:49:55.503 に答える
1

ブール値を文字列にtrue変換する場合は"1"、(空の文字列)falseに変換します。""

http://php.net/manual/en/language.types.string.php#language.types.string.casting

あなたの期待は正しくありません。

于 2012-04-18T05:47:33.780 に答える
0

これが、boolを文字列に変換するときにPHPが行うことです。
これを試して:

echo $collection->isVipCustomer($customer_id) ? 1 : 0;

または、デバッグ目的で何かを出力したいだけで、falseの明確な兆候が必要な場合は、次を使用します。

var_dump($collection->isVipCustomer($customer_id));

これは出力bool(true)またはbool(false)

于 2012-04-18T05:48:11.620 に答える