我有一个变量$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
- 1 回答
- 0 关注
- 263 浏览
添加回答
举报
0/150
提交
取消