从MySQL到PHP的布尔值-转换为tinyint并进行比较

时间:2018-07-05 07:53:59

标签: php mysql mysqli boolean

我的数据库有多个布尔值。保存数据库后,布尔值转换为tinyint(1)。我认为这是因为它只需要保存1或0。

但是,我现在在比较PHP中的值时遇到问题。我将tinyint保存到一个数组中,而没有进行任何代码级转换。该数组具有多个条目,即文本和日期,以及带有布尔值的多个条目,例如:

array[0] is '09:45:00'
array[1] is '10:45:00'
array[2] is 1
array[3] is 0
array[4] is 0
array[5] is 1
array[6] is 'active'

现在,如果我遍历数组,我想检查该值是时间,文本还是true / false。

检查条目是否为true始终会返回true,因为没有条目为空。检查条目是1还是0适用于布尔值,但是当我检查'active'== 0时,它返回true。为什么会发生这种情况?如果将字符串与tinyint进行比较,如何得到错误的结果?

与===相比在任何情况下都不起作用。

1 个答案:

答案 0 :(得分:1)

我认为您可以使用一些嵌套的if-else语句来做到这一点。但是我很确定也有一个更好看的解决方案。 :)

$a=array('09:45:00','10:45:00',1,0,0,1,'active',3.12);

foreach ($a as $value) {
    $type= gettype($value);
    if ($type == "string") {
        if(strtotime ($value)){
            echo "$value is 'Time' \n";
        }
        else{
            echo "$value is 'String' \n";
        }
    } elseif ($type == "integer") {
        if($value == 0 || $value == 1){
            echo "$value is 'Boolean' \n";
        }
        else{
            echo "$value is 'Integer' \n";
        }
    } else{
        echo "$value is ($type)!";
    }
}
相关问题