2012-02-04 53 views
1

我從MySQL數據庫獲取數據,並試圖檢查列中是否有數據。下面是數組元素的一個樣子:

[2] => Array 
( 
     [p_name] => This is text 
) 

現在我有以下語句:

if($products[2]['p_name'] == 0) 
     echo '$products[2][\'p_name\'] == 0'; 

輸出是:

"$products[2]['p_name'] == 0" 

現在,它只是我,或者是不是沒有任何意義?

+0

http://stackoverflow.com/questions/2804553/difference-between-numeric-and-string-value-in-php – Kev 2012-02-04 18:18:54

+0

哦,打字鴨... – gd1 2012-02-04 18:18:58

+0

相關:http://stackoverflow.com/q/6843030/53114 – Gumbo 2012-02-04 18:20:46

回答

2

鑄造爲數字的文本串始終是0:(int) 'This is Text'等於0

你可以只使用empty()功能或is_numeric(),然後你的代碼:

if (empty($var)) 

(其中檢查$var要麼是""(空字符串),0(0爲整數),0.0(0爲float),"0"(0作爲字符串),NULLFALSEarray())。

if (is_numeric($var) && $var === 0)) 
+0

謝謝!那麼如何檢查單元格是否爲空? – Nate 2012-02-04 18:17:49

+1

如果它總是一個字符串,則使用'==='''。否則使用'empty()'。請閱讀[類型比較](http://php.net/manual/en/types.comparisons.php)。 – cmbuckley 2012-02-04 18:20:27

0

這是因爲你比較文本數量。這將始終比較0到0

0

如果您指的是爲什麼"This is text" == 0,這是因爲PHP是鬆散類型的,並且當您將該字符串與整數進行比較時,該字符串將被轉換爲0

這可能是不期望的行爲,所以你需要使用等於運算符,例如,

`"This is text" == 0` // True 
`"This is text" === 0` // False 

Demo

0
if (isset($products[2]['p_name']) && !empty($products[2]['p_name'])) 
{ 
    //your code 
}