bccomp
定义
//两个数相等时返回 0; num1 比 num2 大时返回 1; 其他则返回 -1。
//第三位数字为小数的位数
bccomp(string $num1, string $num2, ?int $scale = null): int
在判定数据库中的数据是否为0时,可用bccomp方法,使用empty可能会导致错误,因为empty只会判定字符串"0"为空,"0.0"便不为空了,如果数据库存储的是浮点数,使用empty判定是否为实数0,则可能会出bug。
// empty只会判定字符串’0‘为空
$r['empty-0'] = empty('0');//true
// 字符串‘0.0’empty函数认为是非空的
$r['empty-0.0'] = empty('0.0');//false
// 精确数值比较,需要使用bccomp
$r['bccomp'] =bccomp('0.00',0);//0
// 第三个参数表示保留几位小数
$r['bccomp-0.00'] = bccomp('0.009',0,2);//0
// 默认只保留8位小数
$r['bccomp-0.00000009-defalut'] = bccomp('0.00000009',0);//1
// 在第九位时就会截断
$r['bccomp-0.000000009-defalut'] = bccomp('0.000000009',0);//0
// 可显式指明需要保留几位小数
$r['bccomp-0.000000009-9'] = bccomp('0.000000009',0,9);//1
return $r;
{
"empty-0": true,
"empty-0.0": false,
"bccompt": 0,
"bccompt-0.00": 0,
"bccompt-0.00000009-defalut": 1,
"bccompt-0.000000009-defalut": 0,
"bccompt-0.000000009-9": 1
}
isset
isset() 函数用于检测变量是否已设置并且非 NULL。
如果一次传入多个参数,那么 isset() 只有在全部参数都已被设置时返回 true。 计算过程从左至右,中途遇到未设置的变量时就会立即停止。
$r = null;
var_dump(isset($r)); //bool(false)
var_dump(isset($r['demo']['fd']));//bool(false)
$d = 'h';
var_dump(isset($d));//bool(true)
var_dump(isset($r,$d));// bool(false)
$e = 'h';
var_dump(isset($d,$e))//bool(true)
empty
判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于false,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
empty() 本质上与 !isset($var) || $var == false 等价
当var存在,并且是一个非空非零的值时返回 false 否则返回 true.
以下的东西被认为是空的:
“” (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
“0” (作为字符串的0)
null
false
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
var_dump(empty(' '));//bool(false)
var_dump(empty(''));//bool(true)