我的SQL数据库中有可变类型的数据,我正在用PHP填充表。
有时我有3列,有时候我有更多,具体取决于数据的类型。 如果我使用:
$fourthcolumn=$row['fourth'];
if(empty($fourthcolumn)){
// DO NOTHING
}else{
echo "<td class='fourth'>" . $fourthcolumn. "</td>";
}
然后它按预期工作,但有一个例外: 有些列是数量。当数量为“0”时,它返回为空,并且不会使td值为“0”。
在我的结构中,如果没有信息,那么单元格是完全空白的,这就是我期望回来的空白
有没有办法退回'0'?我做错了什么?
答案 0 :(得分:3)
empty(0)
在php中评估为true
所以你可以明确检查
if(empty($fourthcolumn) && $fourthcolumn !==0 && $fourthcolumn !== "0"){
// DO NOTHING
}else{
echo "<td class='fourth'>" . $fourthcolumn. "</td>";
}
答案 1 :(得分:1)
用于empty()的php文档定义了它的工作方式&#34;确定变量是否被认为是空的。如果变量不存在或者其值等于FALSE,则该变量被视为空。&#34;
http://php.net/manual/en/function.empty.php
0将被视为错误。
我建议改用
$fourthcolumn=$row['fourth'];
if(isset($fourthcolumn)){
echo "<td class='fourth'>" . $fourthcolumn. "</td>";
}else{
// DO NOTHING
}
isset检查变量是否为空。
答案 2 :(得分:0)
使用此
$fourthcolumn=$row['fourth'] ?: 0;
它描述如下
如果$row['fourth']
为空,则为0
答案 3 :(得分:0)
bool empty(混合$ var)
确定变量是否为空。如果变量不存在或者其值等于FALSE,则该变量被视为空。如果变量不存在,empty()不会生成警告。
在PHP中,0 == false。因此,如果检查的值为0,则为空(正确)返回true。
问题可以解决如下:
if(empty($fourthcolumn) && $fourthcolumn !== 0 && $fourthcolumn !== "0"){
// DO NOTHING
}else{
检查以确保$ fourthcolumn不等于数字0或字符串&#34; 0&#34; (使用严格相等,因此它不会匹配false,或者例如空字符串。)