为了账号安全,请及时绑定邮箱和手机立即绑定

PHP:为什么 !!"0.00" 结果为真

PHP:为什么 !!"0.00" 结果为真

PHP
HUWWW 2022-10-14 14:56:23
我有一个变量$amount,有时可以"0.00"。目前要检查此变量是否具有值以及它是否不为零以下条件正在使用:if (!!$amount)何时$amount是"0.00"或"0,00"条件是true,而应该是false。最优雅的制作方法是什么false?我想过使用if ($amount === "0.0" || $amount === "0,00")和if (!!floatval($amount))但是没有更好的方法吗?更新:再次检查,发现这.是一个小数分隔符,所以它不能是“0,00”。
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

!!"0.0"并且!!"0,0"被评估为true因为它们被视为常规的非空字符串,因此不被视为假值。字符串中唯一被评估为 false 的零值是"0"


您可以使用正则表达式来检查输入是否仅包含字符0,.和,:


// returns false if $input contains a zero value

function CheckZeroes($input)

{

    return !preg_match('/^[0.,]*$/', $input);

}


$inputs = [ 'a', '0.5', '0,5', '1,000', '1,000.42', '0', '0,0', '0.0', '' ];


foreach ($inputs as $input)

{

    echo "'$input' returns " . (CheckZeroes($input) ? 'true' : 'false') . PHP_EOL;

}

这输出:


'a' returns true

'0.5' returns true

'0,5' returns true

'1,000' returns true

'1,000.42' returns true

'0' returns false

'0,0' returns false

'0.0' returns false

'' returns false


查看完整回答
反对 回复 2022-10-14
  • 1 回答
  • 0 关注
  • 263 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号