我有以下;php serialize未定義變量
$foo;
$foo = serialize($foo);
print_r($foo);
it gave me a result of N;
現在我不知道這是否是我使用的系統是唯一的,或者如果這是正常結果。我所知道的是這是我的網站造成的主要問題。
我的問題是......序列化一個未定義的變量時這是正常的嗎?如果有,請解釋爲什麼它輸出這個結果。謝謝你的時間。
我有以下;php serialize未定義變量
$foo;
$foo = serialize($foo);
print_r($foo);
it gave me a result of N;
現在我不知道這是否是我使用的系統是唯一的,或者如果這是正常結果。我所知道的是這是我的網站造成的主要問題。
我的問題是......序列化一個未定義的變量時這是正常的嗎?如果有,請解釋爲什麼它輸出這個結果。謝謝你的時間。
看起來,字符串N;
是d形式的null
。 (See this codepad)
然而,有兩兩件事需要注意:
null
。否則,您會收到有關$foo
是未定義變量的通知。有人認爲你可以隱藏警告,但這是不好的做法。您應該通過對所有變量使用合理的默認值來完全防止它們。serialize()
的輸出。您可以將其存儲在數據庫,文件或Memcached,APC或Redis等內存緩存系統中。但是,您永遠不需要明白serialize()
的輸出是什麼意思,因爲unserialize()
。這就是我一直在尋找的。謝謝 –
它按預期工作:
<?php
$foo;
$foo = serialize($foo);
var_dump($foo); // Print the string "N"
$unserialized = unserialize($foo);
var_dump($unserialized); // Print NULL
但是爲什麼你在看的serialize
輸出?這應該與您的網站無關。重要的是unserialize
可以讓您恢復正確的數據。
我同意。感謝您的反饋 –
'N' for'null'也許? –
多數民衆贊成在我的想法,我試圖谷歌找到任何文件,但找不到任何東西。 –
你不認爲序列化未定義的數據應該有未定義的行爲?在調用'serialize'之前定義它們怎麼樣? –