2010-12-10 78 views
2

我遇到在那裏我本地安裝LAMP(運行PHP 5.3),使用空(空字符串測試)按預期工作的問題,但同一站點的遠程運行服務器(PHP 5.1.6)的行爲不同,因爲empty()不能識別空字符串。請看下圖:PHP空()的行爲出現異常

表單提交一個空的文本字段值,PHP的測試,這是不是空的使用下列內容:

if (! empty($_POST['field']) 
// On the remote server, the above condition never evaluates an empty field as empty. However, if i change this to the following, it works correctly.. 
if ($_POST['field'] !== '') 

任何人任何線索,爲什麼這可能發生?

+1

它包含什麼?使用'var_dump()'來查明。 – 2010-12-10 10:29:58

+0

的var_dump包含:字符串(0) 「」 真正 – spinozf 2010-12-10 10:36:26

回答

4

空字符串不是唯一的「空」值。例如,$_POST['field']的值很可能是null,其中!== ''。參見:http://php.net/manual/en/function.empty.php

+0

嗨,產生的var_dump字符串(0) 「」 真的。奇怪的是,我在本地和遠程獲得不同的行爲...... – spinozf 2010-12-10 10:40:18

+0

好吧,那真的很奇怪。 'var_dump($ _ POST)'說什麼? – 2010-12-10 10:49:56

+0

或者$ _ POST [ '場']可能是0,將返回False爲 「如果(!空($ _ POST [ '場']))」 和真正的「如果($ _ POST [ '場']!== '')「 – 2010-12-10 11:20:00

0

if (! empty($_POST['field']) 它是在你的代碼或僅在這個問題嗎?它應該是:

if (!empty($_POST['field'])) { 
    echo 'something'; 
} 
+0

是的,它只是爲了演示問題中的問題,如果值不爲空,我的代碼會執行數據庫插入 – spinozf 2010-12-10 10:33:52