如何对数组执行NULL和未定义检查

时间:2016-04-09 16:28:15

标签: php arrays session

我想实现以下逻辑 - 如果有一个数组,让我们在会话中说“portfolioHistoryResults”,然后循环它并显示其他什么都不做。

这并不是什么大不了的事,但我是PHP的新手,看起来PHP不像其他脚本语言那样工作,因为当我使用下面的代码时

if ($_SESSION["portfolioHistoryResults"] != null
    && $_SESSION["portfolioHistoryResults"] != undefined)
{

然后我最终得到Notice: Undefined index: portfolioHistoryResults in /home/abc/vhosts/localhost/views/common/portfolio.php on line 14

在执行该行时,我创建了会话对象,但在某些情况下,它内部不会有“portfolioHistoryResults”变量。看起来PHP希望始终存在或定义。

任何人都可以了解它在PHP中是如何工作的。

3 个答案:

答案 0 :(得分:4)

使用isset()函数测试您的var是否已定义,而不是null

if(isset($_SESSION["portfolioHistoryResults"])){
   // your code
}

在此处查看信息: http://php.net/manual/en/function.isset.php

您还可以阅读此页面关于$_SESSION var:http://php.net/manual/en/reserved.variables.session.php

的内容

在您的代码中似乎您没有在portfolioHistoryResults键中存储任何内容,例如:

$_SESSION["portfolioHistoryResults"] = "test";

编辑

要回答您的评论,您可以对var使用isset(),而不是表达式。这意味着,例如,您不能像这样使用isset()

if(isset($test && $otherTest)){
  //your code
}

但是下面这段代码会起作用,因为你分别测试变量而不是一起测试变量:

if(isset($test) && isset($otherTest)){
  //your code
}

答案 1 :(得分:1)

如果您确定需要阵列,可以使用:

if (is_array($_SESSION["portfolioHistoryResults"])) {
    // Do something
}

有关is_array()

的信息

答案 2 :(得分:1)

您可以使用isset()功能进行同样的检查:

if (isset($_SESSION["portfolioHistoryResults"]))
{