1

我正在尝试这个:

if( ! isset( $_SESSION['type'] ) and !$_SESSION['type'] == "0") 
{
    echo "something";
}

我会得到输出:

注意:未定义索引:在第 32 行输入 x:\xxx\xxx\xxx.php

我怎样才能解决这个问题?

4

4 回答 4

3

如果您尝试从不存在的数组键中读取,PHP 将发出警告(通知)。isset()不会发出警告。

但是,如果未设置“类型”,则保证您的代码会这样做,因为如果未设置类型键,则后半部分if将运行。

目前尚不清楚您要完成什么。也许你的意思是:

if (!isset($_SESSION['type']) || $_SESSION['type'] == '0') 
{
  echo "something";
}

但理想情况下,你会做这样的事情:

if (!isset($_SESSION['type']))
{
  $_SESSION['type'] = '0'; // set default value
}

现在其余的代码可以假设它存在。

于 2013-10-20T17:04:41.680 回答
0

我认为这个答案是一个好方法:

if(  isset( $_SESSION['type'] ) && ( !$_SESSION['type'] == "0")) {

   echo "something";
}

这就是说如果会话变量类型被设置并且不等于零,则回显。这是你想要的?

于 2013-10-20T17:13:22.180 回答
0

你的第一句话是说它没有设置....删除第一个不(!)。

尝试这个:

if(  isset( $_SESSION['type'] ) && ( $_SESSION['type'] !== "0")) {

   echo "something";
}
于 2013-10-20T17:02:19.253 回答
0
( isset( $_SESSION['type'] ) == false || $_SESSION['type'] != "0") ? 'something' : ''; 
于 2013-10-20T17:07:05.477 回答