为什么我需要几乎使用Isset?

时间:2015-08-28 12:05:54

标签: php forms validation isset

为什么每次我需要几乎使用isset()时,我无法理解为什么php总是会注意到并且警告后面是两个代码,我不明白为什么我们需要isset()

请简单解释一下,因为我是一个低思想家,因为你可以看到我声明了变量x,但PHP表示未定义这只是在复选框和单选按钮没有在文本框中遇到甚至在声明变量我们需要像$var='';

一样在顶部声明它

请解释我的思绪现在很混乱我不知道什么是真或假我知道isset用于检查变量是否设置或为空但是为什么它很重要。为什么在复选框中它不会给我错误HERE IS THE ERROR WITHOUT ISSET()

错误代码

<?php
    if(isset($_POST['Submit'])){
        $x=$_POST['burger'];                    
            if($x == ''){
                echo 'Please fill it up';                   
            }else{
                foreach($x as $z){
                        echo $z.'<br>';

                }
            }             
      }
?>

右一

<?php
    if(isset($_POST['Submit'])){            
        if(isset($_POST['burger'])){
            $x=$_POST['burger'];    
        }
        if(empty($x)){
            echo 'Please fill it up';           
        }else{
            foreach($x as $z){
                    echo $z.'<br>';

            }
        }
    }
?>

3 个答案:

答案 0 :(得分:0)

Php isset()用于检查变量是否设置。所以没有isset检查,$ x没有被定义导致错误。(未初始化的变量$ x)
解释如下,

if(isset($_POST['Submit'])){  //checks if $_POST["submit"] is set, preventing $_POST uninitialized errors

                        if(isset($_POST['burger'])){ //checks if $_POST["burger"] is set, preventing $_POST uninitialized errors
                            $x=$_POST['burger'];  //$x will be always set, bcoz its inside isset($_POST["burger"])   
                        }
                        if(empty($x)){
                            echo 'Please fill it up';

                        }else{
                            foreach($x as $z){
                                    echo $z.'<br>';

                            }


                        }


                  }

答案 1 :(得分:0)

$_POST是一个数组。通常,当您尝试访问不存在的数组的键时,会出现错误。 isset允许您检查密钥是否存在。这样你就可以编写一个如果抛出一个人类可读的错误,或者在发布的值不存在的情况下使用默认值。

替代isset,您可以使用:

if (array_key_exists('Submit', $_POST)) {
}

isset更像是执行检查的通用方式,并且通常用于此目标。但它也有一些副作用!即使密钥在技术上存在,它也可以返回false。

通过使用像array_key_exists这样的特定功能,您的代码更加冗长,更具体,使您更容易理解正在发生的事情,并且您不会有这些前面提到的副作用。< / p>

答案 2 :(得分:0)

当您尝试访问之前没有初始化的PHP变量时,会发出警告。所以isset()用于检查变量是否存在。

但是您的解决方案存在问题,因为如果未设置$_POST['Burger'],也不会设置$ x,最好使用if(isset($x)){而不是{{1 }}