首頁  >  問答  >  主體

php條件循環錯誤條件

請告訴我,如果條件為真,為什麼不顯示「ok」? 我不明白為什麼如果觸發條件就會顯示“否”。

<?php if (get_number() == "ok") {
    echo "ok";
}
else {
    echo "no";
}
function get_number() {
    $number = rand(1, 10);
    echo $number;
    if ($number == 5) {
        return "ok";
        return false;
    }
    else {
        get_number();
    }
} ?>

P粉536532781P粉536532781431 天前519

全部回覆(2)我來回復

  • P粉741678385

    P粉7416783852023-09-08 14:19:49

    您的else 區塊不會傳回任何內容,因此除非您在第一次嘗試時得到數字5,否則它將轉到else 區塊,該區塊會調用自身,但實際上不會向初始呼叫傳回任何值。

    如果函數不傳回任何內容,您將得到 NULL

    也會在 else 區塊中加入一個 return 語句,以使傳回的值一直冒泡到初始呼叫。

    if ($number == 5) {
        return "ok";
    }
    else {
        return get_number();
    }
    

    順便說一句,我希望這不是真正的程式碼,而只是一些測試,因為它基本上只是一種過於複雜的回顯 ok 的方式。它應該永遠無法到達 echo 'no';

    回覆
    0
  • P粉696605833

    P粉6966058332023-09-08 09:24:01

    請將 else 條件從 get_number(); 更改為 return get_number(); 以進行遞歸呼叫。

    另外,為什麼在 if 條件中使用 2 個 return 語句?

    return "ok";
    return false;

    您可以保留第一個,刪除第二個回傳語句。

    回覆
    0
  • 取消回覆