PHP中readline()函数未读取全部输入问题求助
解决PHP readline()跳过输入的问题
嘿,这个问题我之前也踩过坑!你的代码里有个典型的小失误——你在while循环的条件里调用了一次readline(),紧接着在循环体里又调用了一次,这就导致每次循环会读取两次输入:
- 第一次输入被
while(readline()!="stop")里的readline()消耗掉了,只用来判断是否退出循环,根本没被保存和输出; - 第二次输入才被循环体里的
readline()读取,然后输出出来。
只有输入"stop"的时候,while条件里的readline()直接读到了终止指令,循环立刻退出,所以不需要第二次输入就能被识别。
修正方案
解决思路很简单:把读取到的输入先存到一个变量里,用同一个变量完成判断和输出,这样就只会读取一次输入了。
写法一(紧凑版)
<?php while(($input = readline()) != "stop") { echo "You have entered: $input\n"; } ?>
写法二(逻辑更清晰)
<?php while(true) { $input = readline(); if($input == "stop") { break; } echo "You have entered: $input\n"; } ?>
这样每次循环只会读取一次输入,既用它判断是否退出,又用它输出内容,就不会出现需要重复输入的问题啦。
内容的提问来源于stack exchange,提问作者Veselin Kutov
相关产品推荐
相关产品推荐

