sprintf関数は引数で指定した値を指定の形式にフォーマットした文字列を返します。第一引数にフォーマット形式、第二引数以降に変換前の値(文字列や数値)を指定します。変換する値が複数ある場合は第二引数以降、順番に指定します。
sprintf('フォーマット形式', 変換前の値, 変換前の値, …);
第一引数のフォーマット形式の主な型指定子は以下になります。
%s:引数を文字列として扱います。
%d:引数を整数として扱います。
%0(桁数)d:引数を整数として扱い、整数の左側に桁数に対応した0を埋めます。
第一引数の型指定子の順番は、第二引数以降の変換前の値の順番と対応しています。
<?php
$format = '%sと%sを%d個収穫しました。<br>';
echo sprintf($format, 'トマト', 'キャベツ', 7);
echo sprintf($format, 'ピーマン', 'レタス', 10);
?>
実行結果は以下になります。
トマトとキャベツを7個収穫しました。
ピーマンとレタスを10個収穫しました。
次に0埋め用の型指定子を使用します。
<?php
$items = array('トマト','キャベツ','ピーマン','レタス');
foreach ($items as $key => $value){
echo 'key:#' .sprintf('%02d', $key + 1). '、value:' .$value. '<br>';
}
?>
実行結果は以下になります。
key:#01、value:トマト
key:#02、value:キャベツ
key:#03、value:ピーマン
key:#04、value:レタス
なお、sprintf関数が指定の形式にフォーマットした文字列を返すのに対し、printf関数は指定の形式にフォーマットした文字列を出力します。echoで出力する必要はありません。
<?php
$format = '%sと%sを%d個収穫しました。<br>';
printf($format, 'トマト', 'キャベツ', 7);
printf($format, 'ピーマン', 'レタス', 10);
?>
実行結果は以下になります。
トマトとキャベツを7個収穫しました。
ピーマンとレタスを10個収穫しました。
