我有一个变量$amount,有时可以"0.00"。当前要检查此变量是否具有值以及它是否不为零,正在使用以下条件:
if (!!$amount)
Run Code Online (Sandbox Code Playgroud)
当$amount是"0.00"或"0,00"条件是true,而它应该是false。
最优雅的制作方法是什么false?我想过使用
if ($amount === "0.0" || $amount === "0,00")
Run Code Online (Sandbox Code Playgroud)
和
if (!!floatval($amount))
Run Code Online (Sandbox Code Playgroud)
但没有更好的方法吗?
更新:再次检查并发现这.是一个小数分隔符,所以它不能是“0,00”。
!!"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;
}
Run Code Online (Sandbox Code Playgroud)
这输出:
'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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |