2014-09-06 144 views
0

如何在检查它是否存在的同时通过$_GET变量值'0'? 比如我通常检查,看看是变量存在的:
$myVar= (!isset($_GET['t1'])? $_GET['t1'] : '');

$myVar= (!empty($_GET['t1'])? $_GET['t1'] : '');

任的这两种检查,但返回false

+0

https://eval.in/189157 – 2014-09-06 00:48:53

回答

3

你的第一线是不是做你所期望的,因为这是问:是不是$_GET['t1']没有设置?如果不是,$myvar = $_GET['t1']。如果它被设置,$myvar = ''

$myVar= (!isset($_GET['t1'])? $_GET['t1'] : '');

所以它应该是:

$myVar= (isset($_GET['t1'])? $_GET['t1'] : '');

+2

零被认为是空的,所以'!empty($ _ GET ['t1'])'不会通过http://us3.php.net/手动/ EN/function.empty.php – 2014-09-06 00:52:36

1

的一种方法,我更喜欢,特别的参数数量较多处理时,是指定默认值的数组然后使用union运营商提前准备$_GET阵列。


举例来说,你期望最多4个参数,你想抓住它们或应用它们没有给出的默认值。通过isset三元探戈这样做会给你这样的事情:

$myVar1 = isset($_GET['t1']) ? $_GET['t1'] : ''; 
$myVar2 = isset($_GET['t2']) ? $_GET['t2'] : false; 
$myVar3 = isset($_GET['t3']) ? $_GET['t3'] : null; 
$myVar4 = isset($_GET['t4']) ? $_GET['t4'] : null; 

这是乏味的,容易拼写错误,并能获得看只是简单的凌乱。

对比搭配:

$defaults = [ 
    't1' => '', 
    't2' => false, 
    't3' => null, 
    't4' => null 
]; 
$_GET += $defaults; 

$myVar1 = $_GET['t1']; 
$myVar2 = $_GET['t2']; 
$myVar3 = $_GET['t3']; 
$myVar4 = $_GET['t4']; 

后者宣称你期待前面的参数,并使用后的参数分离应用的默认值。