Created
June 2, 2012 23:55
-
-
Save mayconbordin/2860547 to your computer and use it in GitHub Desktop.
PHP CLI progress bar in 5 lines of code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function progress_bar($done, $total, $info="", $width=50) { | |
$perc = round(($done * 100) / $total); | |
$bar = round(($width * $perc) / 100); | |
return sprintf("%s%%[%s>%s]%s\r", $perc, str_repeat("=", $bar), str_repeat(" ", $width-$bar), $info); | |
} |
Great! Thanks!
"This will make a fine addition to my collection" - General Grievous
Added this code to my essentials repo, thank you!
Absolutely fantabulous! Thanks
I've modified it to give you a running count too:
function progressBar($done, $total, $info = "", $width = 50) { $perc = round(($done * 100) / $total); $bar = round(($width * $perc) / 100); return sprintf("%s%%[%s>%s] %s/%s %s\r", $perc, str_repeat("=", $bar), str_repeat(" ", $width - $bar), $done, $total, $info); }
Would provide a full example of this snippet?
Can't make a pull request, but made an update with more info and a slight reformat at
my gist
If you want an emoji bar -
public function emojiPercentBar($done,$total=100)
{
$green=html_entity_decode('🟩', 0, 'UTF-8');
$white=html_entity_decode('⬜', 0, 'UTF-8');
$perc = round(($done * 100) / $total);
$bar = round((10 * $perc) / 100);
return sprintf("%s%s", str_repeat($green, $bar), str_repeat($white, 10-$bar));
}
I think it's more consistent to use floor
instead of round
. And why return
, simply echo the output.
function progress_bar($done, $total, $info="", $width=50) {
$perc = floor(($done * 100) / $total);
$bar = floor(($width * $perc) / 100);
echo sprintf("%s%%[%s>%s] %s/%s %s\r", $perc, str_repeat("=", $bar), str_repeat(" ", $width - $bar), $done, $total, $info);
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It works, thanks.