php如何优雅的判断 0.0/0.00/0.000 是否为空? 测试过用empty函数不行
如何优雅 ?
if ( (int) $number == 0)
echo 'empty';
if ( floatval($number) == 0 )
echo 'empty'
转成浮点,与0对比。
floatval(0.0) == 0
转换成int 类型判断是否为 0 可以否。
$zero = array ("0.0","0.00","0.000") ;
foreach ($zero as $key => $value){
if(empty($zero)){
echo "变量 $value 为空 <br>";
}else{
echo "变量 $value 不为空 <br>";
}
}
这是不是你要的答案?
首先,PHP 认为 0.0 是空,同理 0.00 和 0.000 也会被等同 0.0 一样被认为是空,所以 empty 将返回 true 来表达 PHP 的规则。
但是,在 PHP 的世界里,’0.0’、’0.00’和’0.000’并不被认为是空,所以 empty 将返回 false。
因而,楼主说的“优雅判断 0.0/0.00/0.000 是否为空”指的是哪种情况呢?empty 函数又如何不胜任了呢?
(补充一句:empty 函数只接受变量的判断)
这是什么鬼问题。
完全不清楚你问的’空’是什么意思。
如果你问的‘空’是PHP中的NULL,那么显然,0/0.0/0.00 都不是NULL,NULL是PHP的一种数据类型。
如果你问的’空’是指假,那么PHP里面0,false,null 都表示假。
在真假逻辑上,(0 == 0.00 == false == null) 返回真。
判断一个简单的基本的数据结构的变量真假,都是一行代码解决,还需要优雅?还能多优雅?
preg_match('/^0(\.(0)+)?$/' , strval($num)) === 0 ? 'not empty' : 'empty'
使用正则表达式进行判断,简单粗暴 and 高效。