!空函数给出了奇怪的价值

时间:2015-03-23 04:11:32

标签: php isset

我有一个php页面,我有一个隐藏的输入,如下所示:

<input type="hidden" id="selOption'+(i+1)+'" name="selOption'+(i+1)+'" value="0"/>

正如您所看到的,它具有默认值= 0。 现在使用Ajax我将上述输入的值与其他一些隐藏输入类型=“hidden”一起发送到另一个页面,如:

    function showbtn(no,tid,tp){
        var v_qno = document.getElementById("QuestionID"+no).value;
        var v_secid = document.getElementById("sectionID"+no).value;
        var v_selans = 0;
            var v_vstatus = document.getElementById("visitStatus"+no).value;
            v_selans = document.getElementById("selOption"+no).value;

        var dataString = 'testId='+tid+'&secId='+v_secid+'&qNo='+ v_qno+'&selAns='+v_selans+'&vStat='+v_vstatus;
        alert(dataString);
        $.ajax({
            type: "POST",
            url: "../member/updtBttnStatus.php",
            data: dataString,
            cache: false,
            success: function(result){
                 //some code
                }
                alert(result);
            }
        });
    }

我的问题是在使用

时在updtBttnStatus.php页面中
if (!empty($_POST['selAns'])){
//some code here}
else{//}

验证它到if循环的else部分的值,而不应该这样,因为在第一页中设置了默认值= 0。

请帮助我,我错过了什么。提前致谢

1 个答案:

答案 0 :(得分:3)

不,你不应该在empty()上使用0。您会得到误报,因为在您的情况下0是有效值。

引用manual

以下内容被认为是空的:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)

作为替代方案,请在if块中使用isset()

if(isset($_POST['selAns']) && $_POST['selAns'] !== '') {
    echo 'hi';
}