現在の位置: ホーム> 最新記事一覧> sprintfとstr_pad()を使用して、出力形式を完全に制御します

sprintfとstr_pad()を使用して、出力形式を完全に制御します

gitbox 2025-05-02

毎日のPHPプログラミングでは、テーブル形式のリスト、ロギング形式、コマンドライン出力など、きちんと整列したデータを出力する必要があることがよくあります。エコーを使用して手動のスペースまたはタブを使用してアライメントを実現する場合は、 Sprintf()Str_Pad()を簡単に処理できるようになります。

1。Sprintf():出力をフォーマットするためのツール

sprintf()は、文字列のフォーマットに使用されるPHPの関数です。フォーマット変数は、フォーマットテンプレートに従って出力することができます。これは、数字と文字列のアライメントを制御するのに非常に適しています。

例1:形式の数値出力

$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]);
}

出力の結果は均一であり、数や小数の場所がどれほど大きくても、整列した方法で表示できます。

2。STR_PAD():文字塗りつけを簡単に実装します

sprintf()は強力ですが、場合によっては、左右に文字列を単純に整列して埋めるだけで、 str_pad()が役立ちます。

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_rightstr_pad_left 、またはstr_pad_bothに記入してください

例2:文字アラインメントのメニューリストを作成します

$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

アライメント効果は一目で明らかです!

3。sprintf()とstr_pad()の組み合わせ

もちろん、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プログラムをよりプロフェッショナルに見せてください!