如何在检查$_GET
变量值是否存在时传递'0'
变量值?
例如,我通常通过以下方式检查变量是否存在:
$myVar= (!isset($_GET['t1'])? $_GET['t1'] : '');
或
$myVar= (!empty($_GET['t1'])? $_GET['t1'] : '');
但要么这两个检查都返回false
答案 0 :(得分:3)
你的第一行没有按照你的期望行事,因为它问:$_GET['t1']
未设置?如果不是,$myvar = $_GET['t1']
。如果设置了$myvar = ''
。
$myVar= (!isset($_GET['t1'])? $_GET['t1'] : '');
所以它应该是:
$myVar= (isset($_GET['t1'])? $_GET['t1'] : '');
答案 1 :(得分: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'];
后者声明了您预期的参数,并将以后应用默认值与使用参数分开。