7
<?php

function testEnd($x) {
    if ( ctype_digit($x) ) {
        if ( $x == 24 ) {
            return true;
            exit;
        } else {
            return false;
                 exit;
        }
    } else {
        echo 'If its not a digit, you\'ll see me.';
        return false;
        exit;
    }
}

$a = '2';

if ( testEnd($a) ) {
    echo 'This is a digit';
} else {
    echo 'No digit found';
}
?>

php関数内でそれらを使用する場合、returnとともにexitが必要ですか? この場合、何かが false と評価されたら、そこで終了して終了したいと思います。

4

1 に答える 1

32

いいえ、必要ありません。関数から戻ると、その後のコードは実行されません。それが実行されたとしても、そこで停止し、関数の呼び出しにも戻らない可能性があります。それexitは行くべきです

PHPマニュアルによると

関数内から呼び出された場合、return ステートメントは現在の関数の実行を直ちに終了し、その引数を関数呼び出しの値として返します。return は、eval() ステートメントまたはスクリプト ファイルの実行も終了します。

一方、 PHPマニュアルによると、終了します

スクリプトの実行を終了します。

したがって、出口が実際に実行されている場合は、すべての実行がそこで停止します

編集

exitが何をするかを示すために、小さな例を挙げてください。関数があり、その戻り値を単純に表示したいとします。次に、これを試してください

<?php

function test($i)
{
    if($i==5)
    {
        return "Five";
    }
    else
    {
        exit;
    }
}


echo "Start<br>";
echo "test(5) response:";
echo test(5);

echo "<br>test(4) response:";
echo test(4); 

/*No Code below this line will execute now. You wont see the following `End` message.  If you comment this line then you will see end message as well. That is because of the use of exit*/


echo "<br>End<br>";


?>
于 2013-05-21T05:39:44.827 に答える