PHP在Console模式下进度条显示

示例效果

在 Linux 下安装文件时,经常会看到有一个百分比的进度条显示,如下图这样:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sJwDDcOV-1578899814537)(index_files/6cb12303-932e-40fc-a015-080db8df4609.png)]

基本原理

这里只说一下 php 相关的语法,相关的代码都 php 做为示例,其它语言也是类似的。

首先在控制台输出一行文本,我们都知道,最常用的就是 echo

那么,如果我们想输出两行文本应该怎么做,是不是要在字体串的末尾添加换行,在 windows 下使用 \r\n,在 maclinux 下使用 \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)]

发布了48 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_37825371/article/details/103958450
今日推荐