2012-03-07 62 views
1

我在使用PHP检索单选按钮的值时遇到了一个实际问题。 。 。我有两个单选按钮这样:PHP不检索无线电输入值

<input name="admin" type="radio" value="1" />Yes 
<input name="admin" type="radio" value="0" checked />No 

和条件PHP语句检查,看看是否PHP可以从中获取任何数据:

if(!empty($_POST['admin'])) { 
    // do stuff 
} 
else { 
    echo "Value not set"; 
} 

问题是,PHP似乎可以返回一个值为单选按钮,如果选择“是”,但不是如果选择“否”,我试图删除“检查”部分,无济于事。无论我尝试什么,我都无法获取“0”值。

我记得使用PHP数组来命名复选框,但是这对于单选按钮肯定不需要,因为只能在任何时候选择它。

或者PHP只是有一个问题,返回值为0的单选按钮?

或者我在没有意识到的情况下做了可怕的错误?

回答

5

PHP函数为空将为0,NULL,“”等返回false。

从php.net引用:

“”(空字符串)

0(0作为整数)

0.0(0为float)

“ 0“(0作为字符串)

NULL

FALSE

阵列()(空数组)

变量$变种; (一个声明的变量,但在一个类中没有值)

所有这些都会返回(false),因此会使您的if语句的执行无效。

您将不得不修改您的条件以反映取决于您希望完成的值的值。

祝你好运!

+0

所以会isset()函数在这种情况下,检查 “0” 值的工作? – Sean 2012-03-07 11:37:04

+0

准确:)但你也必须检查值是否为0,即使值为1或任何其他值,isset也可以工作。像Hendrik Richter所说的那样使用双重条件。干杯! – optimum 2012-03-07 11:39:08

+1

再次感谢,总是惊叹于这里的反应速度和质量! – Sean 2012-03-07 11:46:46

0

我相信零是你的问题。尝试将它们设置为“Y”和“N”,您应该看到N值经过。这是因为0是PHP中的一个空值。

3

你的问题是empty()将0视为空值,不管它是数字0还是字符串'0'。因此,而不是使用空()使用isset()和/或直接检查,例如,

if (isset($_POST['admin'])) { 

if (isset($_POST['admin']) && $_POST['admin'] == 0) { 
+0

真棒:)谢谢! – Sean 2012-03-07 11:38:42