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); | |
} |
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
Would provide a full example of this snippet?