3

関数を変数に設定する方が効率的かどうか疑問に思ってreturnいました。引数で使用する場合は、関数を再度実行する必要がないのでしょうか。

例えば:

function check() {
    foreach() {
        // insert long foreach loop here
        return true;
    }
}

if(check() == 1 || check() === true) {
    // had to go through the function twice?
}

$check = check();
if($check == 1 || $check === true) {
    // only has to go through the function once
}

PHPが関数を最初に実行した結果を保存したのか、それとも毎回関数を実行したのか(引数が同じ場合は非効率に見える-この場合はなし)、疑問に思っていました。

より良いタイトルを提案したり編集したりしたい場合は、先に進んでください。

4

2 に答える 2

5

毎回通過します。2番目の例のように、事前に変数に保存します。

于 2012-09-10T21:05:52.210 に答える
0
if(check() == 1 || check() == true) {

冗長です...単純な等式チェック(==)は、ブール値の「true」を1とにかく扱います。混合値(int +ブール値)を返す場合は、厳密な等価性チェックを使用する必要があります。

if (check() == 1 || check() === true)
                            ^^^

この場合、必須ではありませんが、関数が正当に0値を返すことができる場合と、失敗を示すブール値のfalseを考慮する必要があります。単純な同等性テストで0 == falseは、真です。しかし、それ0 === falseは誤りです。

于 2012-09-10T21:47:39.850 に答える