示例效果
在 Linux 下安装文件时,经常会看到有一个百分比的进度条显示,如下图这样:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sJwDDcOV-1578899814537)(index_files/6cb12303-932e-40fc-a015-080db8df4609.png)]
基本原理
这里只说一下 php
相关的语法,相关的代码都 php
做为示例,其它语言也是类似的。
首先在控制台输出一行文本,我们都知道,最常用的就是 echo
那么,如果我们想输出两行文本应该怎么做,是不是要在字体串的末尾添加换行,在 windows
下使用 \r\n
,在 mac
或 linux
下使用 \r
换行。
重点就在这里,\r
和 \n
有着不同的意思:
\n
表示将光标下移一行
\r
球将将光标称到行首
到这里我们是不是就突然明白了,我只将光标移到行首,不将光标下移,那么每次输出时不就会覆盖上一次的内容了吗,这样不就可以实现进度条的显示了
代码
test.php
<?php
echo PHP_EOL;
for($i = 1; $i <= 100; $i++) {
$downlen = ceil(50 * ($i / 100));
$spacelen = 50 - $downlen;
echo '[' . str_repeat('#', $downlen) . str_repeat(' ', $spacelen) . '] ' . $i . '%' . "\r";
sleep(1);
}
在控制台执行 php test.php
,会看到以下结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SbREqAgc-1578899814538)(index_files/872377e4-2afb-4d89-a04e-4abd9382b602.png)]