php如何优雅的判断 0.0/0.00/0.000 是否为空? 测试过用empty函数不行
巴扎黑
巴扎黑 2017-04-11 09:19:18
[PHP讨论组]

php如何优雅的判断 0.0/0.00/0.000 是否为空? 测试过用empty函数不行

巴扎黑
巴扎黑

全部回复(8)
高洛峰

如何优雅 ?

if ( (int) $number == 0) 
    echo 'empty';

if ( floatval($number) == 0 )
    echo 'empty'
PHPz

转成浮点,与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) 返回真。

判断一个简单的基本的数据结构的变量真假,都是一行代码解决,还需要优雅?还能多优雅?

PHPz

preg_match('/^0(\.(0)+)?$/' , strval($num)) === 0 ? 'not empty' : 'empty' 使用正则表达式进行判断,简单粗暴 and 高效。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号