如何validation$ _GET是否存在?

所以,我有一些PHP代码看起来有点像这样:

<body> The ID is <?php echo $_GET["id"] . "!"; ?> </body> 

现在,当我传递一个像http://localhost/myphp.php?id=26的ID时,它可以正常工作,但是如果没有像http://localhost/myphp.php这样的ID,那么它会输出:

 The ID is Notice: Undefined index: id in C:\xampp\htdocs\myphp.php on line 9 ! 

我已经寻找一种方法来解决这个问题,但我找不到任何方法来检查是否存在一个URLvariables。 我知道一定有办法。

你可以使用isset函数:

 if(isset($_GET['id'])) { // id index exists } 

如果索引不存在,可以创build一个方便的函数来返回默认值:

 function Get($index, $defaultValue) { return isset($_GET[$index]) ? $_GET[$index] : $defaultValue); } // prints "invalid id" if $_GET['id'] is not set echo Get('id', 'invalid id'); 

您也可以尝试同时validation它:

 function GetInt($index, $defaultValue) { return isset($_GET[$index]) && ctype_digit($_GET[$index]) ? (int)$_GET[$index] : $defaultValue); } // prints 0 if $_GET['id'] is not set or is not numeric echo GetInt('id', 0); 
  if (isset($_GET["id"])){ //do stuff } 

通常这是很好的做法:

 echo isset($_GET['id']) ? $_GET['id'] : 'wtf'; 

这是如此时,分配variables的其他variables,你可以默认所有在一口气,而不是不断地使用if语句只是给他们一个默认值,如果他们没有设置。

你正在使用PHP isset

 if (isset($_GET["id"])) { echo $_GET["id"]; } 

你可以使用array_key_exists()内build函数:

 if (array_key_exists('id', $_GET)) { echo $_GET['id']; } 

或者isset()内置函数:

 if (isset($_GET['id'])) { echo $_GET['id']; } 

使用并empty()白色否定(testing如果不是空的)

 if(!empty($_GET['id'])) { // if get id is not empty } 

请尝试:

 <body><?php if(isset($_GET['id'] && !empty($_GET['id'])){ echo $_GET["id"] . "!"; }?>