我正在从数据库中检索一个feild到$ subcat。如果$ subcat为null,我想显示要添加到类别的表单,否则我想显示该类别。 $ subcat确定存在并被正确检索。它是null或字符串。
if ($subcat != null) {
$showCategory = "<p><strong>Auction Category: </strong> ".$tmp['subcat'];
}
else
{
$showCategory = "<form name=\"categoryForm\">
<input name=\"radiobutton\" type=\"radio\" value=\"fakeapproved\" />Fake (Approved)<p>
<input name=\"radiobutton\" type=\"radio\" value=\"fakesuspected\" />Fake (Suspected)<p>
<input name=\"radiobutton\" type=\"radio\" value=\"keyword\" />Forbidden Keywords<p>
<input name=\"radiobutton\" type=\"radio\" value=\"parallelimport\" />Parallel Imports
<input name=\"Submit\" type=\"submit\" value=\"Update\" onclick=\"handleClick(".$pk.");return false\"/>
</form>";
}
然而,所有显示的都是表格。当$ subcat明确无误时,表示仍然显示。我尝试交换else子句,但随后显示了类别,即使$ subcat可验证为null。
答案 0 :(得分:2)
为null。如果变量是空字符串(“”),零,false或空数组,则is_null计算为false。这有点违反直觉,所以我总是建议使用empty()代替。
empty()为0返回true,空字符串,空数组,布尔值false或NULL。所以试试:
if(!empty($subcat)){ do something; }
如果您100%确定只有在变量为NULL时才想要执行某些操作,则仅使用is_null。空通常更好地检查您是否要在意外事件上调用类方法。
编辑:哦,有时从数据库中检索NULL会给你字符串“NULL”,它与实际的NULL值不同。这取决于您正在使用的数据库以及如何将值保存到数据库中。这很容易错过,可以永远弄明白。尝试var_dump()'你的subcat变量,看看它是“NULL”字符串(4)还是字面上的NULL值。这可能会导致您在评论中提到的其他代码段中出现意外行为。
答案 1 :(得分:0)