这段代码可以改进吗? (测试是否设置了变量)

时间:2015-02-05 04:19:32

标签: php

if (!is_null($_GET[SH]))
{

    //Bla bla bla bla you don't need to look
    $data=$_GET[SH]. " - " . date("c");
    putTotalData($filename."complete.txt",$_GET[SH]);
    putData($filename.".txt", $data);
}

基本上我正在测试是否设置了$ _GET [SH]。但是,如果我这样做的话,我会收到警告,说它没有设置。然后代码工作正常。

这样做的方法是什么?有没有办法测试关联数组是否有特定的键?

4 个答案:

答案 0 :(得分:2)

只需使用isset这样的功能:

if(isset($_GET['sh'])) { /* your code */ } else { /* your code */ }

答案 1 :(得分:1)

is_null检查值是null类型(类似于is_intis_string等)。如果要传入变量,则此变量必须存在。如果没有,你会收到警告。

isset是一种语言结构,它可以显式地处理不存在的变量。这是它的目的。将is_null替换为isset

巧合的是,$_GET参数永远不会是null,最糟糕的是它们是一个空字符串。否则参数根本不存在。这就是你所看到的:不存在的变量触发警告,然后用值null代替(因为它还有什么呢?)。

答案 2 :(得分:0)

您可以使用isset($var),但是,我通常需要一个默认值,所以我这样做:

$action = (isset($_GET['action'])) ? $_GET['action'] : 'default';

答案 3 :(得分:0)

empty检查var是否设置为空('',0,false,null)

if(!empty($_GET['SH'])) {
    //something
}