Php !empty()值0.0000的结果为true
我遇到了这种情况,可能是代码中的逻辑错误 这是我的密码Php !empty()值0.0000的结果为true,php,if-statement,is-empty,Php,If Statement,Is Empty,我遇到了这种情况,可能是代码中的逻辑错误 这是我的密码 foreach ($options as $option) { if (($option['max_value'] > 0) && $total_value <= $option['max_value']) { $selected_options[] = $option['option_id']; continue; } if (($option['min_val
foreach ($options as $option) {
if (($option['max_value'] > 0) && $total_value <= $option['max_value']) {
$selected_options[] = $option['option_id'];
continue;
}
if (($option['min_value'] > 0) && $total_value >= $option['min_value']) {
$selected_options[] = $option['option_id'];
}
}
但问题只是在检查min_值时出现的
0.0000不是空的,因此我没有得到预期的输出。谁能给我解释一下怎么了
$options值来自数据库,我有2行
谢谢大家!!这是一个教训 您必须阅读有关的手册
0.0000
不是一个数字,它是一个字符串。您必须阅读有关的手册
0.0000
不是一个数字,而是一个字符串。如果(!empty($option['min\u value'])…)
肯定会将其视为非rempty
根据手册,empty()确定变量是否为空。如果变量不存在或其值等于FALSE,则认为该变量为空
0.0000
是一个不能被视为空的字符序列。如果(!empty($option['minu value'])…)
肯定会将其视为非rempty
根据手册,empty()确定变量是否为空。如果变量不存在或其值等于FALSE,则认为该变量为空
0.0000
是不能视为空的字符序列。因为变量中的值是从数据库中提取的,所以该值将被视为字符串。
而empty()仅当变量中的值为0.0(浮点/数字)或0(数字)或“0”(字符串)时才会返回true
因此“0.0”(字符串)将返回为false。因为变量中的值是从数据库中提取的,所以该值将被视为字符串。 而empty()仅当变量中的值为0.0(浮点/数字)或0(数字)或“0”(字符串)时才会返回true
所以“0.0”(字符串)将返回为false。只需将float的类型更改为int即可
空((int)$model['product_cost'])即使值为0.0,也返回false
空((int)$model['product_cost'])即使值为0.0,也返回falseWhat-does
echo-gettype($option['min_value'])代码>打印<代码>双精度
或字符串
?哦!!上面写着绳子!!这是为什么??My DB字段为十进制(15,4)。取决于用于从数据库和向数据库传输数据的API。Alrite。非常感谢:)那么对于>0的条件,它是如何正确的呢??这也应该是错误的,对吗?echo gettype($option['min_value'])有什么作用代码>打印<代码>双精度
或字符串
?哦!!上面写着绳子!!这是为什么??My DB字段为十进制(15,4)。取决于用于从数据库和向数据库传输数据的API。Alrite。非常感谢:)那么对于>0的条件,它是如何正确的呢??这也应该是错误的,对吗?0.00000可以是双精度的,但是因为源是一个数据库,所以它可能是一个字符串,可以解释行为主义者的浮点。我确实读过文档。它说float中表示的0也是0。我们不能说0.0000是字符串,var_dump(0.0000)代码>仅以浮点(0)形式给出输出。那么对于>0的条件,它的正确性如何??这也应该是错误的,对吧???@Razor,现在你必须看这个:0.00000可以是一个双精度的,但是因为源是一个数据库,它可能是一个字符串,可以解释行为主义者的浮点。我确实读过文档。它说float中表示的0也是0。我们不能说0.0000是字符串,var_dump(0.0000)代码>仅以浮点(0)形式给出输出。那么对于>0的条件,它的正确性如何??那也应该是假的吧???@Razor,现在你必须看看这个:
if(($option['min_value'] > 0 ) ..... ) with
if(!empty($option['min_value']) .... ) same for checking max_value.