毎日のPHPプログラミングでは、テーブル形式のリスト、ロギング形式、コマンドライン出力など、きちんと整列したデータを出力する必要があることがよくあります。エコーを使用して手動のスペースまたはタブを使用してアライメントを実現する場合は、 Sprintf()とStr_Pad()を簡単に処理できるようになります。
sprintf()は、文字列のフォーマットに使用されるPHPの関数です。フォーマット変数は、フォーマットテンプレートに従って出力することができます。これは、数字と文字列のアライメントを制御するのに非常に適しています。
$price = 19.9;
$formatted = sprintf("価格:%.2f 元", $price);
echo $formatted; // 出力:価格:19.90 元
sprintf()は、出力アライメントシナリオでの使用に非常に適しています。たとえば、データのセットを出力する場合、各列の固定幅を設定できます。
$data = [
['名前', '量', '価格'],
['りんご', 10, 2.5],
['バナナ', 5, 1.3],
['オレンジ', 20, 3.75],
];
foreach ($data as $row) {
printf("%-10s %-6d %6.2f 元\n", $row[0], $row[1], $row[2]);
}
出力の結果は均一であり、数や小数の場所がどれほど大きくても、整列した方法で表示できます。
sprintf()は強力ですが、場合によっては、左右に文字列を単純に整列して埋めるだけで、 str_pad()が役立ちます。
str_pad(string $string, int $length, string $pad_string = " ", int $pad_type = STR_PAD_RIGHT): string
$文字列:元の文字列
$ length :充填後の全長
$ PAD_STRING :パディングに使用される文字
$ pad_type :方向、オプションのstr_pad_right 、 str_pad_left 、またはstr_pad_bothに記入してください
$menu = [
['ログイン', 'https://gitbox.net/login'],
['登録する', 'https://gitbox.net/signup'],
['ヘルプセンター', 'https://gitbox.net/help'],
];
foreach ($menu as $item) {
$name = str_pad($item[0], 20, ' ', STR_PAD_RIGHT);
echo $name . ' => ' . $item[1] . PHP_EOL;
}
出力:
ログイン => https://gitbox.net/login
登録する => https://gitbox.net/signup
ヘルプセンター => https://gitbox.net/help
アライメント効果は一目で明らかです!
もちろん、2つの機能は、より複雑なタイプセットのニーズに適した組み合わせで使用することもできます。たとえば、 sprintf()を使用して形式の精度を処理し、column widthをstr_pad()に記入できます。
$items = [
['ID' => 1, '名前' => 'りんご', '価格' => 2.5],
['ID' => 2, '名前' => 'バナナ', '価格' => 1.3],
['ID' => 3, '名前' => 'オレンジ', '価格' => 3.75],
];
foreach ($items as $item) {
$id = str_pad($item['ID'], 4, ' ', STR_PAD_RIGHT);
$name = str_pad($item['名前'], 10, ' ', STR_PAD_RIGHT);
$price = str_pad(sprintf("%.2f", $item['価格']), 6, ' ', STR_PAD_LEFT);
echo "{$id}{$name}{$price} 元\n";
}
出力:
1 りんご 2.50 元
2 バナナ 1.30 元
3 オレンジ 3.75 元
フォーマット制御に関しては、 Sprintf()とstr_pad()にはそれぞれ独自の強みがあります。
sprintf()は、数値、日付、文字列などのフォーマットに適しており、強力な形式のテンプレートサポートを備えています。
str_pad()は、幅を埋め、左右の文字列を中心にするのに適しています。
2つの組み合わせにより、出力レイアウトがより柔軟で強力になります。
これら2つの機能を習得することにより、コマンドラインツール、ログ印刷、またはバックグラウンド管理ページの出力のデバッグであろうと、美しくてきれいなテキスト出力インターフェイスを簡単に作成できます。出力から始めて、PHPプログラムをよりプロフェッショナルに見せてください!