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)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值