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

PHPではTRUE文字列形式の1と同じだからです。ただし、PHPはデータ型の処理方法が異なるため、===演算子を使用して型とデータを検証する必要があります。

比較する場合は、===演算子を使用する必要があります。

実際に何が戻ってくるかを確認する1つの方法はvar_dump、出力で使用することです。

于 2013-03-25T04:27:01.737 に答える
1

trueをエコーアウトすると、常に1が得られます。試してください

var_dump($num);

これにより、変数のタイプと値がわかります。あなたはそこでそれが真実であると見るでしょう。

于 2013-03-25T04:28:35.953 に答える
1

何かの値をエコーし​​ようとすると、その値は文字列に変換されます。だから、あなたはブール値をエコーし​​ようとしています。OK、文字列への変換に関するドキュメントを読みましょう

ブール値のTRUE値は、文字列「1」に変換されます。ブール値の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 に答える