如何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"] . "!"; }?>