2012-02-04 34 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 
}