2015-08-28 33 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)){