2014-09-06 54 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']; 

後者宣稱你期待前面的參數,並使用後的參數分離應用的默認值。