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 上可用,但在此之前,您似乎可以执行上述操作。