Heim  >  Fragen und Antworten  >  Hauptteil

Fehlerbedingung der PHP-Bedingungsschleife

Bitte sagen Sie mir, wenn die Bedingung wahr ist, warum wird dann nicht „ok“ angezeigt? Ich verstehe nicht, warum „Nein“ angezeigt wird, wenn die Bedingung ausgelöst wird.

<?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 Tage vor520

Antworte allen(2)Ich werde antworten

  • 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';

    Antwort
    0
  • P粉696605833

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

    请将 else 条件从 get_number(); 更改为 return get_number(); 以进行递归调用。

    另外,为什么在 if 条件中使用 2 个 return 语句?

    return "ok";
    return false;

    您可以保留第一个,删除第二个返回语句。

    Antwort
    0
  • StornierenAntwort