PHPで0埋め文字をechoで出すときに、printfを使ってしまい、時間を取られてしまった。
以下のコードで、00003を期待していたが、結果は、000035となってしまった。
マニュアルを読んだら理解した。
echo printf("%05d", 3) . PHP_EOL; // 結果は、000035になってしまう。
printfは、第一引数のformatに従って、文字列を出力する。戻り値は、出力した文字数。
000035は、printfで00003を出力して、echoが返り値の出力した文字数5を出力しているために発生する。
echoを使って出力するのなら、第一引数のformatに従った文字列が戻り値のsprintfを使うべきだった。
printf("%05d\n", 3) . PHP_EOL; echo sprintf("%05d", 3) . PHP_EOL; // 結果は、どちらも00003になる。
PHP5.6.28で確認した。
コメント