php序列化未定义的变量

php序列化未定义的变量,php,serialization,Php,Serialization,我有以下几点: $foo; $foo = serialize($foo); print_r($foo); it gave me a result of N; 现在我不知道这是我使用的系统独有的还是正常的结果。我所知道的是它给我的网站带来了很大的问题 我的问题是。。。序列化未定义的变量时这正常吗?如果正常,请有人解释为什么它会输出此结果。感谢您抽出时间。字符串N是null的d形式。() 但是,有两件事需要注意: 您应该在使用变量之前定义所有变量,即使您只是将它们声明为null。否则,您将收到

我有以下几点:

$foo;
$foo  = serialize($foo);
print_r($foo);

it gave me a result of N;
现在我不知道这是我使用的系统独有的还是正常的结果。我所知道的是它给我的网站带来了很大的问题


我的问题是。。。序列化未定义的变量时这正常吗?如果正常,请有人解释为什么它会输出此结果。感谢您抽出时间。

字符串
N
null
的d形式。()
但是,有两件事需要注意:

  • 您应该在使用变量之前定义所有变量,即使您只是将它们声明为
    null
    。否则,您将收到一条关于
    $foo
    是未定义变量的通知。有些人认为你可以隐藏警告,但这是一个糟糕的做法。您应该通过对所有变量使用合理的默认值来完全防止它们
  • 通常,不需要读取
    serialize()
    的输出。您可以将其存储在数据库、文件或内存缓存系统(如Memcached、APC或Redis)中。但是,您永远不需要了解
    serialize()
    的输出意味着什么,这要归功于
  • 它按预期工作:

    <?php
    
    $foo;
    $foo  = serialize($foo);
    var_dump($foo); // Print the string "N"
    
    $unserialized = unserialize($foo);
    var_dump($unserialized); // Print NULL
    

    我就是这么想的,我试着在谷歌上找到关于这个的任何文档,但什么都找不到。你不认为序列化未定义的数据应该有一个未定义的行为吗?在调用
    序列化之前定义它们怎么样?是的,我同意。我正在调试一个同事的工作,这似乎是导致他/她/其错误的原因。我设置了一个默认值来解决这个问题,但我花了一段时间才找到。我只是不断地得到N;出现在数据库中,并导致一些奇怪的结果。这就是我一直在寻找的。非常感谢。