到tinyint的转换与比较

a1o7rhls  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(334)

我的数据库有多个布尔值。保存数据库后,布尔值被转换成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将始终返回true,因为没有条目为空。检查条目是1还是0对布尔值有效,但是当我检查'active'==0时,它返回true。为什么是这种情况?如果我将字符串与tinyint进行比较,如何得到false?
与===比较在任何情况下都不起作用。

ejk8hzay

ejk8hzay1#

我想你可以用一些嵌套的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)!";
    }
}

相关问题