if null or int(0) value to 0

时间:2016-06-24 作者:pulla

我正在尝试获取评论计数。它工作得很好。但“0”值未正确获取。它带有空或null。

    $comments_count     =  wp_count_comments(get_the_ID());
        $approved_comments_count = $comments_count->approved;
                        var_dump ($approved_comments_count);  //<=== this 

        if (($approved_comments_count===NULL) || is_null($approved_comments_count) || ($approved_comments_count === null ) || empty($approved_comments_count))
            $approved_comments_count=0;
我用“var\\u dump”进行了测试

    string(1) "1"
    int(0)
    string(1) "1"
    string(1) "1"
    string(1) "2"
    string(1) "1"
    string(1) "4"
    int(0)
    int(0)
    int(0)
int(0)不会返回到“0”

我添加了if条件,但不起作用。如何将int(0)设置为“0”

非常感谢。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

当您只需要显示结果或根据硬编码的已知数据类型值进行简单检查时,将整数转换为字符串是没有用的。只有在需要严格针对特定数据类型验证值时,转换数据类型才有用。

你的问题是你不知道如何测试你的价值观。0, 无论是整型值还是字符串值,与==)中。如果需要检查任何变量是否为空或有值,包括0 作为字符串或整数值,则需要调整运算符。

供您特别检查和禁止/允许0 作为有效/无效值,您需要使用strick比较,这里的数据类型很重要。快一点0 === "0" 将为false作为整数0 与字符串不完全相同"0"

请注意,您的条件语句是错误的,这就是一切失败的地方。检查时0 strictly (===) 具有NULLis_null, 结果将为false,正在检查0 具有empty() 将返回true,这将执行|| 条件语句中的运算符。

在您的用例中,您可以执行以下操作以允许整数值0 作为有效值和所有其他值,并且不允许使用空字符串

if (    !$approved_comments_count // Universal check to see if empty, will consider false as empty too
     && 0 !== $approved_comments_count // Test for integer 0
) {
    echo \'$approved_comments_count is a true empty string\';
} else {
    echo \'The value of $approved_comments_count is \' . $approved_comments_count;
}
甚至更好

if (    $approved_comments_count // Allows anything that does not equal empty
     || 0 === $approved_comments_count // Test for integer 0
) {
    echo \'The value of $approved_comments_count is \' . $approved_comments_count;
} else {
    echo \'$approved_comments_count is a true empty string;
}
如果0 哪里是字符串,您可以测试它0 如下所示

\'0\' === $approved_comments_count

"0" === $approved_comments_count