我想知道是否有可能为特殊的php cli基础应用程序更改某些输出以更改终端上的某些值而不是回显新的。例如,这是cli应用程序。
#!/usr/bin/env php
<?php
$percent = 0;
for ($i = 0; $i <= 100; $i++) {
echo $percent . "\n";
sleep(1);
$percent++;
}
/**
0
1
...
*/
这是一个向用户显示百分比的简单应用。所以我们必须在这个例子中的每个循环之后更新它,而不是追加它。我想改变百分比而不是显示新的。
答案 0 :(得分:9)
使用\r
代替\n
。 \r
是回车符,它会跳回到行的开头而没有换行符。
$percent = 0;
for ($i = 0; $i <= 100; $i++) {
echo $percent . "\r";
sleep(1);
$percent++;
}
这适用于Windows,Linux和MacOS
答案 1 :(得分:2)
这样的东西应该适用于你需要的东西(在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));
}
答案 2 :(得分:1)
这实际上取决于您的终端(模拟器)类型,而不是所使用的语言。尝试使用退格符(0x08)“擦除”当前内容,然后输出新内容。