Heim > Fragen und Antworten > Hauptteil
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粉7416783852023-09-08 14:19:49
您的 else
块不会返回任何内容,因此除非您在第一次尝试时得到数字 5,否则它将转到 else
块,该块会调用自身,但实际上不会向初始调用返回任何值。
如果函数不返回任何内容,您将得到 NULL
。
还在 else
块中添加一个 return
语句,以使返回的值一直冒泡到初始调用。
if ($number == 5) { return "ok"; } else { return get_number(); }
顺便说一句,我希望这不是真正的代码,而只是一些测试,因为它基本上只是一种过于复杂的回显 ok
的方式。它应该永远无法到达 echo 'no';
P粉6966058332023-09-08 09:24:01
请将 else 条件从 get_number();
更改为 return get_number();
以进行递归调用。
另外,为什么在 if 条件中使用 2 个 return 语句?
return "ok"; return false;
您可以保留第一个,删除第二个返回语句。