【发布时间】:2021-04-04 03:59:15
【问题描述】:
当小数作为字符串返回时,使用 PHP 的 MySQL 有时会很烦人,就像使用 MYSQL 函数一样。有没有一个函数可以检查一个变量是否是其中的任何一个?
null, (bool)false, (int)0, (float)0.00, (string)"", (string)"0", (string)"0.00", or (array)[].
empty() 几乎可以完成这项工作,但有时会以字符串形式返回这些 mysql 十进制值。 isset() 和 is_null() 在 PHP 7 和 8 中的操作方式不同。我缺少像 emptyish() 这样的东西。
什么不能用 empty():
if (empty($var)) // Doesn't work for decimal/floats passed as string "0.00"
if (!isset($var) || !$var) // Does not work in PHP 8 for an empty string
if ($var == 0) // Leaves a warning if $var is not declared
【问题讨论】:
-
使用严格的比较。始终知道您的值是什么数据类型。
-
@JohnConde 这并不总是很方便。表单可以将数值作为字符串传递,MySQL PHP 驱动程序有时可以将 int 和 float 作为字符串返回。当然可以说明变量类型和比较的整个转换。但让我们现实一点,时间就是金钱。
-
那么你想检测 0、空字符串还是所有可能的“空”值?
-
这听起来像是 XY 问题。你到底想在这里解决什么?您无法使用一行代码检查所有可能的情况。你需要有一些期望。如果您需要一个字符串,请检查该变量是否已设置且不是空字符串。如果您期望一个整数,请检查该值是否已设置,并且不是 0。等等
-
@Dharman 可能你有点过于复杂了。我不关心变量类型。我只是想确定变量是否为空。
标签: php comparison php-7 string-comparison php-8