【问题标题】:PHP - unserialize is said null but contains an arrayPHP - 反序列化被称为空但包含一个数组
【发布时间】:2015-09-20 19:22:32
【问题描述】:

为什么这样做:

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

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

结果如下:

Array ( )
no data

我的 var 如何包含一个数组并被测试为 TRUE 为 null ?

【问题讨论】:

    标签: php arrays serialization null


    【解决方案1】:

    Type juggling 负责。空数组和 null 都等于 false。因为你使用==comparison operator,所以类型没有比较他们是considered equal。如果使用 === 比较运算符,则空数组不等于 null,因为 if 语句的计算结果为 false。

    Demo

    【讨论】:

    • 感谢您提供这些优质参考
    【解决方案2】:

    由于您使用的是松散比较 (==),$myarray == null$myarray == [] 相同,松散比较意味着仅比较值并且这两个值都是 empty。要比较类型和值,请使用严格比较 ===.

    Type comparison tables, Comparison Operators

    【讨论】:

    • 这不正是我写的吗?
    • @JohnConde,对不起,我在写自己的答案时没有阅读其他答案,但如果是这样的问题,我会很乐意删除我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    相关资源
    最近更新 更多