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最大值=20.0000

  • 最小值=21.0000最大值=0.0000

  • 谢谢


    谢谢大家!!这是一个教训

    您必须阅读有关的手册


    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,也返回false

    What-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.