PHP 中的简单比较 if($var == 0) 不起作用


Simple comparison in PHP if($var == 0) not working?

我正在从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:(int) 'This is Text'等于 0。

你可以只使用 empty() 函数或is_numeric(),然后使用你的代码:

if (empty($var))

(检查$var是否为 ""(空字符串(、0(0 作为整数(、0.0(0 作为浮点数(、"0"(0 作为字符串(、NULLFALSEarray()(。

if (is_numeric($var) && $var === 0))
这是因为

您将文本与数字进行比较。这将始终将 0 与 0 进行比较

如果你指的是为什么"This is text" == 0,那是因为 PHP 是松散类型的,当你将字符串与整数进行比较时,字符串被强制转换为 0

这可能不是所需的行为,因此您需要使用相等运算符,例如,

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

演示

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