php使用$ _GET变量发送值为0

时间:2014-09-06 00:47:28

标签: php

如何在检查$_GET变量值是否存在时传递'0'变量值? 例如,我通常通过以下方式检查变量是否存在:
$myVar= (!isset($_GET['t1'])? $_GET['t1'] : '');

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

但要么这两个检查都返回false

2 个答案:

答案 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'];

后者声明了您预期的参数,并将以后应用默认值与使用参数分开。