2017-05-20 48 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"; 
 
      } 
 
     } 
 

 
    ?>

相关问题