2017-05-20 82 views
0

無法使其正常工作。我想從以下網址獲取變量,如:

domain.com?region=STATE

if (empty($_GET)) { 
    echo 'American'; 

} 

else { 
    $t = $_GET["region"]; 
    if ($t == "Texas") { 
     echo "Texan"; 
    } elseif ($t == "California") { 
     echo "Californian"; 
    } else { 
     echo "American"; 
    } 
} 

這並不工作。但是萬一有錯誤的參數輸入,如:

domain.com?asdasd=whatever

我得到一個錯誤:

「通知:未定義指數:區域在test.php的第19行」

你能告訴我怎樣才能防止這個錯誤出現,基本上把它當作空變量,並返回「美國人」呢?

我嘗試這樣的代碼,但它不工作:

if (empty($_GET)) { 
    echo 'American'; 

} 
elseif ($_GET != "region") { 
    echo 'Anything Else'; 
} 
else { 
    $t = $_GET["region"]; 
    if ($t == "Texas") { 
     echo "Texan"; 
    } elseif ($t == "California") { 
     echo "Californian"; 
    } else { 
     echo "American"; 
    } 
} 

即使URL是真實的:

domain.com?region=Texas

仍然得到「奇招「在輸出中。

+0

[PHP: 「注意:未定義變量」, 「注意:未定義指數」 和 「通知:未定義偏移」]的可能的複製(http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef) – Qirel

回答

1

使用isset(($_GET['region'])彷彿餵養它不發出通知的未定義的變量:

if (!isset($_GET['region'])) { 
    echo 'American'; 
} else { 
    $t = $_GET["region"]; 
    if ($t == "Texas") { 
     echo "Texan"; 
    } elseif ($t == "California") { 
     echo "Californian"; 
    } else { 
     echo "American"; 
    } 
} 
+0

繁榮的litile邏輯,這個完美的作品,thanx Enstage – reizer

+0

如果我的答案是正確的,那麼檢查投票按鈕下方的綠色標記以標記它就像這樣:) – Enstage

1

使用$ _GET [ '區域']不$ _GET本身

if (!isset($_GET["region"]) || empty($_GET["region"])) { 
     echo 'American'; 

    } 
    else { 
     $t = $_GET["region"]; 
     if ($t == "Texas") { 
      echo "Texan"; 
     } elseif ($t == "California") { 
      echo "Californian"; 
     } else { 
      echo "American"; 
     } 
    } 
+0

thanx阿米特,但它仍然不起作用。如果我使用其中一個定義的狀態,我會得到相同的輸出「Anything Else」。 IE: test.php?region = Texas – reizer

+0

@reizer試試這個我已經改變了代碼 –

1

你可以使用array_key_exists('region',$_GET)來測試參數是否像這樣存在

if(!empty($_GET)){ 

    $t = array_key_exists('region', $_GET) && !empty($_GET['region']) ? strtolower($_GET['region']) : false; 

    if($t){ 
     switch($t){ 
      case 'texas': echo 'Texan';break; 
      case 'california': echo "Californian"; break; 
      default: echo 'Other State'; break; 
     } 
    } else { 
     echo 'Anything Else'; 
    } 
} else { 
    echo 'American'; 
} 
+0

哇,你甚至包括小寫/大寫更正以防萬一。 – reizer

1

試試這個吧:

<?php 
 

 
     if (empty($_GET)) { 
 
      echo 'American'; 
 
     } else if($_GET){ 
 
      echo 'No Error! (Anything Else)'; 
 
     } 
 

 
     else { 
 
      $t = $_GET["region"]; 
 
      if ($t == "Texas") { 
 
       echo "Texan"; 
 
      } elseif ($t == "California") { 
 
       echo "Californian"; 
 
      } else { 
 
       echo "American"; 
 
      } 
 
     } 
 

 
    ?>

相關問題