2012-04-18 2 views
1

У меня странная проблема.php bool echo output

Если есть функция, которая делает это возвращать значение,

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); 

, когда его истинной она выводит 1, но когда его ложный его пустой, ожидая выход 0

Почему?

+0

Попробуйте добавить $ cus_vip_id! == 0 – drodil

+0

Неверно вставлять переменные в ваш запрос плохо и опасно, отметьте [PDO] (http://php.net/manual/en/book.pdo.php) и параметры –

+0

Использование 'var_export ($ collection-> isVipCustomer ($ customer_id)) вместо этого. –

ответ

2

Из PHP документации:

Булево значение TRUE преобразуется в строку «1». Boolean FALSE: преобразован в "" (пустая строка). Это позволяет преобразовать обратно и между булевыми и строковыми значениями.

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

Для печати возвращаемого значения обратно с типом, попробуйте использовать вместо var_dump($myVar).

0

Это то, что делает PHP при преобразовании bool в строку.
Попробуйте это:

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

Или если вы просто хотите вывести что-то для целей отладки и вы хотите иметь явный признак ложной, используйте:

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

Этот выход будет bool(true) или bool(false)