即使在PHP中使用empty()函数为空时复选框也会被检查

时间:2013-03-22 21:56:12

标签: php html checkbox simplexml

我写了这段代码:

 <?php if (!empty($isLocal)) {echo "checked";} ?>

听起来很简单?如果$ isLocal不为空,则检查它,否则不检查它。

然而,尽管价值空洞,它还是继续检查它!这有什么问题?!

我不得不在整个页面上回显isLocal几次并且它保持不变 - 它仍然是空的但复选框已被选中。是的,我查看了HTML代码以查看是否未写入“已检查”。它只在PHP逻辑中打印“已检查”。

HTML代码就是这个

Enable this machine:<input type="checkbox" value="1" name="isLocal" 
<?php if (!empty($isLocal)) {echo "checked";} ?>  />

还有一件事 - 我使用simplexml从XML文件加载isLocal。

 $configurations = simplexml_load_file('configs.xml');

foreach ($configurations->xpath("/configurations") as $t)
{

$isLocal=$t->isLocal;   

 }

但是你看,问题在于它可以看出它是空的还是有价值的。我不能使用“isset()”因为它总是设置为空值。

2 个答案:

答案 0 :(得分:0)

这样做:

<form action="checked.php" method="post">
<input type="checkbox" value="1" name="isLocal"/> Enable this machine
<input type="submit" name="formSubmit" value="Submit" />
</form>

<?php 
if (!empty($_POST['isLocal']))
{echo "checked";}
?>  

答案 1 :(得分:0)

刚刚了解到输入“var_dump($ isLocal)”它表明它是一个对象,而不是一个简单的数据类型!

加载XML对象后执行此操作:

$isLocal=(string)$t->isLocal;

解决了这个问题。