-1

当使用 MYSQL 函数将小数作为字符串返回时,使用 PHP 的 MySQL 有时会很烦人。是否有一个函数来检查一个变量是否是其中的任何一个?

null、(bool)false、(int)0、(float)0.00、(string)""、(string)"0"、(string)"0.00" 或 (array)[]。

empty()几乎可以完成这项工作,但有时会以字符串形式返回这些 mysql 十进制值。isset() 和 is_null() 在 PHP 7 和 8 中的操作方式不同。我缺少类似 emptyish() 的东西。

什么不适用于空():

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
4

3 回答 3

1

这种零/空条件在 PHP 7 和 8 版本中的工作方式相同:

if (empty($var) || (float)$var == 0)

它检查 $var 是否为以下任何一种:未设置、null、(bool)false、(int)0、(float)0.00、(string)""、(string)"0"、(string)"0.00" , 或 (数组)[]

并替换为空():

function nil(&$var) { // https://www.dictionary.com/browse/nil
  return (empty($var) || (float)$var == 0);
}

像这样使用:

if (nil($var)) {
  echo 'The value is either not set, an empty string, empty array, null, or equals zero.';
}
于 2020-12-26T18:58:04.610 回答
0

检查这个isset gettype

Isset 检查 null 而不是空值。通过 gettype 你可以避免类型字符串。

if(isset($var) || gettype($v) !== 'string'){
.
.
.
}
于 2020-12-27T06:04:15.213 回答
0

使用 isset()。

<?php
if(isset($var)){
  //$var is set
  if(!$var){
    //$var is 0
  } else if(empty($var)){
    //$var is empty
  } else {
    //code goes here
  }
}else{
  //$var is not set
}
于 2020-12-31T02:24:00.637 回答