我的数据库有多个布尔值。保存数据库后,布尔值转换为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进行比较,如何得到错误的结果?
与===相比在任何情况下都不起作用。
答案 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)!";
}
}