カウンタを0詰めで表示する

広告

前回の例では数字を単に表示していました。今回は指定した桁数になるように数値を0詰めで表示するように変更してみます。

0詰めを行うには「sprintf」関数を使って下記のように行います。

$counter = 15;

$new_counter = sprintf("%04d", $counter);

上記は4桁の値として0詰めを行う場合です。桁数が変数などに保存されている場合は下記のように行って下さい。

$counter = 15;
$counter_lenght = 8;   // カウンターの桁数

$format = '%0'.$counter_lenght.'d';
$new_counter = sprintf($format, $counter);

では実際に試して見ます。

counter2.php

<html>
<head><title>PHP TEST</title></head>
<body>

<?php

$counter_file = 'counter.txt';
$counter_lenght = 8;

$fp = fopen($counter_file, 'r+');

if ($fp){
    if (flock($fp, LOCK_EX)){

        $counter = fgets($fp, $counter_lenght);
        $counter++;

        rewind($fp);

        if (fwrite($fp,  $counter) === FALSE){
            print('ファイル書き込みに失敗しました');
        }

        flock($fp, LOCK_UN);
    }
}

fclose($fp);

$format = '%0'.$counter_lenght.'d';
$new_counter = sprintf($format, $counter);
print('訪問者数:'.$new_counter.'人目です');

?>
</body>
</html>

またカウンター保存用ファイルは前のページと同じく「counter.txt」というファイルを使っています。

counter.txt

では「couner2.php」と「counter.txt」をWWWサーバの同じディレクトリに設置しブラウザ経由で「counter2.php」を見ると下記のように表示されます

アクセスカウンター

ブラウザの再読み込みなどを使って同じページを再度見てみます。

アクセスカウンター

上記のようにカウンターの値が指定した桁数で0詰めして表示されます。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。