在PHP中使用empty()函数时,即使值为空,也会选中复选框

在PHP中使用empty()函数时,即使值为空,也会选中复选框,php,html,checkbox,simplexml,Php,Html,Checkbox,Simplexml,我写了这段代码: <?php if (!empty($isLocal)) {echo "checked";} ?> 但你看,问题是它可以看到它是空的还是有值的。我不能使用“isset()”,因为它总是被设置为空值 像这样做: <form action="checked.php" method="post"> <input type="checkbox" value="1" name="isLocal"/> Enable this machine <i

我写了这段代码:

 <?php if (!empty($isLocal)) {echo "checked";} ?>
但你看,问题是它可以看到它是空的还是有值的。我不能使用“isset()”,因为它总是被设置为空值

像这样做:

<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";}
?>  

启用这台机器

刚刚了解到,通过输入“var_dump($isLocal)”可以显示它是一个对象,而不是一个简单的数据类型

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

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

解决了这个问题

由于HTML没有显示您要回显的checked属性,因此听起来可能有其他东西在切换复选框-该页面上是否有任何javascript可能会改变内容?没有javascript。这就是为什么我感到困惑。如果我回显“$isLocal”,并且它在复选框前显示空值,则在应该取消选中复选框时,复选框仍会被选中。我还在复选框后面回显$isLocal,它仍然是空的。由于查看源代码时查看的呈现HTML没有显示选中的
,因此其他内容正在选中复选框。这可能是您的浏览器会话管理、javascript或其他内容。这可能不是PHP的问题。
<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";}
?>  
$isLocal=(string)$t->isLocal;