2015-08-28 38 views
-1

为什么每次我需要差不多使用isset()我无法理解为什么PHP总是有注意和警告以下是两个代码,我不明白为什么我们需要isset()为什么我需要几乎使用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>'; 

      } 
     } 
    } 
?> 
+0

您使用'isset()函数'检查一个值是否被定义并且不是'null'。编程涉及很多'null'检查,如果有可能没有设置值,这不仅仅是在PHP中。 – David

+0

当您的表单实际上并未发送“汉堡包”字段时,您会收到通知。检查那里的拼写错误。 (如果你经常遇到这样的事情,你最好在任何地方都使用'isset'。) – mario

回答

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>'; 

          } 


         } 


        } 
0

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

在替代isset,你可以使用:

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

isset更多的是执行检查一个通用的方法,而且它通常用于这一目的。但它也有一些副作用!它可以例如返回假,即使关键技术上存在。

通过使用像array_key_exists这样的特定功能,您的代码会更加冗长和更具体,从而更容易理解正在发生的事情,并且您不会遇到前述的副作用。

0

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

但与你解决的问题,因为当$_POST['Burger']没有设置的情况下,$ X也不会被设置,这将是更好地使用的if(isset($x)){代替if(empty($x)){