我有以下内容;
$foo;
$foo = serialize($foo);
print_r($foo);
it gave me a result of N;
现在我不知道这是我正在使用的系统所独有的,还是这是正常结果。我所知道的是它导致我的网站出现重大问题。
我的问题是...序列化未定义的变量时这是否正常?如果是这样,有人可以解释为什么它会输出这个结果。谢谢你的时间。
字符串N;
似乎是null
的serialize()
d形式。(请参阅此代码键盘)
但是,有两件事需要注意:
- 您应该在使用它们之前定义所有变量,即使您只是将它们声明为
null
。否则,您将收到有关$foo
是一个未定义的变量的通知。有些人认为你可以隐藏警告,但这是不好的做法。您应该通过对所有变量使用合理的默认值来完全防止它们。 - 通常,不需要读取
serialize()
的输出。您可以将其存储在数据库、文件中或内存缓存系统(如 Memcached、APC 或 Redis )中。但是,由于unserialize()
,您将永远不需要了解serialize()
的输出意味着什么。
它按预期工作:
<?php
$foo;
$foo = serialize($foo);
var_dump($foo); // Print the string "N"
$unserialized = unserialize($foo);
var_dump($unserialized); // Print NULL
但是你为什么要看serialize
的输出?这应该与您的网站无关。重要的是unserialize
会给你正确的数据。