我想知道是否有可能为特殊的php cli基础应用程序改变一些输出,以改变终端上的一些值,而不是回声新的。例如,这是cli应用程序。
#!/usr/bin/env php
<?php
$percent = 0;
for ($i = 0; $i <= 100; $i++) {
echo $percent . "'n";
sleep(1);
$percent++;
}
/**
0
1
...
*/
这是一个向用户显示百分比的简单应用程序。因此,在本例中,我们必须在每个循环之后更新它,而不是附加它。
用'r
代替'n
。'r
是回车,它将跳回行开头,不需要换行符。
$percent = 0;
for ($i = 0; $i <= 100; $i++) {
echo $percent . "'r";
sleep(1);
$percent++;
}
Windows, Linux和MacOS
像这样的东西应该可以满足您的需要(在Linux (CentOS)机器上进行测试和验证):
for ($percent = 0; $percent <= 100; $percent++) {
echo $percent;
sleep(1);
// Print one or more backspaces, erasing current character(s)
echo str_repeat("'x08", strlen($percent));
}
这实际上取决于您的终端(模拟器)类型,而不是所使用的语言。尝试使用退格字符(0x08)来"擦除"当前内容,然后输出新内容。