php。 Echo 在 readline 之后无法在无限循环中工作
php. Echo don't work in infinity loop after readline
我正在尝试编写可在控制台运行的简单脚本,但我 运行 遇到了问题。回声在我的情况下不起作用。但是当我删除行:readline ('Command:') 时,它开始按预期工作,因此我尝试用 print_r 替换 echo,但这没有帮助。我从 Windows 控制台启动脚本。
<?php
while (true){
$input = readline('Command: ');
$input = strtolower($input);
echo $input; //don't work
switch ($input){
case 'stop':
exit(0);
break;
case '1':
echo 1; //don't work
break;
default:
echo 'Command ' . $input . ' not found.'; //don't work
}
}
来自用户对文档的评论 - http://php.net/manual/en/function.readline.php#104181 ...
The readline library is not available on Windows.
if (PHP_OS == 'WINNT') {
echo '$ ';
$line = stream_get_line(STDIN, 1024, PHP_EOL);
} else {
$line = readline('$ ');
}
所以试试
echo 'Command: ';
$input = stream_get_line(STDIN, 1024, PHP_EOL);
正如已经指出的那样,从 PHP 7.1 开始,此功能在 Windows 上可用,但在此之前,您似乎可以执行上述操作。
我正在尝试编写可在控制台运行的简单脚本,但我 运行 遇到了问题。回声在我的情况下不起作用。但是当我删除行:readline ('Command:') 时,它开始按预期工作,因此我尝试用 print_r 替换 echo,但这没有帮助。我从 Windows 控制台启动脚本。
<?php
while (true){
$input = readline('Command: ');
$input = strtolower($input);
echo $input; //don't work
switch ($input){
case 'stop':
exit(0);
break;
case '1':
echo 1; //don't work
break;
default:
echo 'Command ' . $input . ' not found.'; //don't work
}
}
来自用户对文档的评论 - http://php.net/manual/en/function.readline.php#104181 ...
The readline library is not available on Windows.
if (PHP_OS == 'WINNT') { echo '$ '; $line = stream_get_line(STDIN, 1024, PHP_EOL); } else { $line = readline('$ '); }
所以试试
echo 'Command: ';
$input = stream_get_line(STDIN, 1024, PHP_EOL);
正如已经指出的那样,从 PHP 7.1 开始,此功能在 Windows 上可用,但在此之前,您似乎可以执行上述操作。