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

我有一个变量$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”。


HUWWW
浏览 264回答 1
1回答

泛舟湖上清波郎朗

!!"0.0"并且!!"0,0"被评估为true因为它们被视为常规的非空字符串,因此不被视为假值。字符串中唯一被评估为 false 的零值是"0"您可以使用正则表达式来检查输入是否仅包含字符0,.和,:// returns false if $input contains a zero valuefunction 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
打开App,查看更多内容
随时随地看视频慕课网APP