使用empty不能提供正确的结果

时间:2011-05-07 07:13:50

标签: php

有人可以告诉我为什么当会话显然有价值时我能够在这个区块内回应吗?

$_SESSION['test']['testing'] = 'hgkjhg';
echo $_SESSION['test']['testing']; // Produces hgkjhg (Clearly not empty)

if(empty($_SESSION['test']['testing'])){
echo 'Hello'; // This echoes and to me, shouldn't
}

3 个答案:

答案 0 :(得分:1)

真正的答案是关于session_start。与session_register不同,直接分配给$ _SESSION不会自动调用session_start。

直接来自session_register()的PHP手册

  

如果未调用session_start()   在调用此函数之前,   用session隐式调用session_start()   不会有任何参数。 $ _SESSION   不会模仿这种行为   需要session_start()

答案 1 :(得分:0)

尝试评论其余代码。有些东西要么挂在会话中,要么你在脚本的其他地方分配值。

<?php 
session_start();

$_SESSION['test']['testing'] = 'hgkjhg';
echo $_SESSION['test']['testing']; // Produces hgkjhg (Clearly not empty)

if(empty($_SESSION['test']['testing'])){
echo 'Hello'; // This echoes and to me, shouldn't
}

var_dump($_SESSION);
?>

结果:

hgkjhgarray(1){[“test”] =&gt; array(1){[“testing”] =&gt; string(6)“hgkjhg”}}

为了争论,你说你看到的是“你好”,而不是“hgkjhg”。应显示“hgkjhg”。

答案 2 :(得分:0)

尝试将其更改为:

$_SESSION['test']['testing'] = 'hgkjhg';
echo $_SESSION['test']['testing']; 

if(empty($_SESSION['test']['testing'])){
    echo 'Hello. Error in $_SESSION !'; 
}

如果它仍然回显“你好”,那么你的代码后面的某个地方有一行:

echo 'Hello';