我想实现以下逻辑 - 如果有一个数组,让我们在会话中说“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中是如何工作的。
答案 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
}
的信息
答案 2 :(得分:1)
您可以使用isset()功能进行同样的检查:
if (isset($_SESSION["portfolioHistoryResults"]))
{