我想实现以下逻辑-如果有一个数组,比如会话中的"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中是如何工作的吗。
使用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
}
如果你确定你想要一个数组,你可以使用:
if (is_array($_SESSION["portfolioHistoryResults"])) {
// Do something
}
关于is_array()的信息
您可以使用isset()函数进行相同的检查:
if (isset($_SESSION["portfolioHistoryResults"]))
{