0

false 效果很好,但是当我返回 true 时,我得到一个 true1 为什么?

$num = 3;

function number($num)
{
    for($i = 2; $i < $num; $i++) {

        if($num % $i == 0) {
            echo("false");

            return false;
        }
    }
    echo("true");

    return true;
}

 echo number($num);
4

5 回答 5

1

因为在 PHPTRUE中与字符串格式的 1 相同。但是,PHP 处理数据类型的方式不同,这就是您需要使用===运算符来验证类型和数据的原因。

您进行的任何比较都应使用===运算符。

查看实际返回的一种方法是var_dump在输出上使用。

于 2013-03-25T04:27:01.737 回答
1

呼应真实总是会给你1.尝试

var_dump($num);

这将向您显示变量的类型和值是什么。你会在那里看到它是真实的。

于 2013-03-25T04:28:35.953 回答
1

当您尝试回显某些值时,它的值将转换为字符串。所以,你试图回应布尔值。好的,让我们阅读有关转换为字符串的文档

布尔 TRUE 值转换为字符串“1”。Boolean FALSE 被转换为“”(空字符串)。

于 2013-03-25T04:32:47.567 回答
0

当您echo number($num); true被转换为字符串时,输出为“1”。

于 2013-03-25T04:28:33.800 回答
0

在您的情况下,您正在将布尔值隐式转换true为整数,其值为1.

要严格比较,需要使用类型和值比较,也就是===运算符。

此外,var_dump()print_r()显示变量的类型。

于 2013-03-25T04:28:46.517 回答