2015-09-20 52 views
1

为什么这样做:PHP - 反序列化被认为无效,但包含数组

$myarray = array(); 
$_SESSION['myarray'] = serialize($myarray); 

$myarray = unserialize($_SESSION['myarray']); 
if ($myarray == null) { 
    print_r($myarray); 
    print("<br>no data"); 
    exit; 
} 

给出了这样的结果:

Array () 
no data 

如何我的变量可以包含数组和测试TRUE为null ?

回答

3

Type juggling负责。一个空数组和null都等于false。因为您使用==comparison operator,所以不会比较类型,它们是considered equal。如果使用===比较运算符,那么由于if语句的计算结果为false,因此空数组不等于空。

Demo

+0

感谢您对这些细小的引用 – Oliver

2

由于松散的比较所使用(==),$myarray == null相同$myarray == [],松散比较装置,只有值进行比较,并且这两个值是empty。为了比较的类型以及与===.

Type comparison tables值使用严格比较,Comparison Operators

+0

这不正是我写的吗? –

+0

@JohnConde,对不起,我在写我自己的时候没有阅读其他答案,但如果是这样的问题,我会很乐意删除我的答案。 – Danijel