2013-09-29 42 views
2

索爾讓我們假設,我們發個帖子查詢到PHP文件, 這個查詢,我們有...... &標題=標題 其中標題是例如title=$(#title).val();(假設我們包括jQuery的) 在PHP中,我們有$title=$_POST['title']; 假設那個標題爲空,PHP會認爲null是字符串嗎?或什麼是空的?PHP如何解釋Javascript的空值?

+4

你試過了嗎? – Lix

+0

空值無處不在。不是嗎? – Kemal

+0

@xy_:你不能告訴一個變量在PHP中爲空,除了實際的'值'NULL。嘗試使用任何其他類似於null的值進行設置將導致一個空字符串 – Martijn

回答

3

PHP Manual

特殊NULL值表示不帶任何值的變量。 NULLNULL類型唯一可能的值。

變量被認爲是NULL如果:

  • 它已經分配了恆定NULL
  • 它尚未設置爲任何值。
  • 它已被unset()

"NULL"NULL不一樣。

var_dump("null" == NULL); 

輸出:

bool(false) 
+2

但事情是這個空值是從Javascript發送的,它就像 title = null 然後你做一個$ title = $ _ POST ['title']; 基本上給$ title =「null」; 不是嗎? –

+0

這就是這樣的:'$ variable =「null」;',null作爲字符串 – Martijn

+0

@AymaneShuichi:查看答案。 '「NULL」與NULL不一樣# –

2

標題得到它發送到服務器之前轉換爲字符串。

將JS值null轉換爲字符串會產生字符串"null"。因此,PHP只會將該變量解釋爲一個字符串。

但是,我懷疑你會收到一個空的輸入框null值。你會得到一個空字符串。

+0

'$(#title).val();'可能不會計算爲'null',除非該元素不存在。 – mewm

+0

@mewm是的,我剛剛編輯了答案。 – ComFreek

1

就你的情況而言,如果你發送一個$(#title).val();作爲ajax請求中的數據到一個php腳本,並且輸入是空的,它將只是一個空字符串。

+0

如果在Javascript中返回undefined,該怎麼辦? $ title會得到字符串「undefined」? –

+0

@AymaneShuichi你爲什麼不嘗試呢? http://jsfiddle.net/ZV6Zd/ – ComFreek

+0

@AymaneShuichi,是的:) – mewm

0

PHP攔截JS空爲「零」 - >字符串,所以要處理表單請求,我有小的工作圍繞在我的PHP代碼像下面

function checknull($arg){ 
    if($arg == "null"){ 
     return; 
    }else{ 
     return $arg; 
    } 
} 
$a=array(); 
$b = "null"; 
$a['hi'] = checknull($b); 
var_dump($a); 

這將輸出作爲

array(1) { ["hi"]=> NULL } 

//同樣可以測試它的$ _REQUEST

$var1 = checknull($_POST['title']); 
var_dump($var1); 

,或者您可以使用

$var1 = $_POST['title'] === 'null'? NULL : $_POST['title']; 
var_dump($var1);