當前位置: 首頁> 最新文章列表> 使用sprintf 和str_pad() 完美控制輸出格式

使用sprintf 和str_pad() 完美控制輸出格式

gitbox 2025-05-02

在日常的PHP 編程中,我們經常需要輸出整齊對齊的數據,比如表格形式的列表、日誌記錄格式、命令行輸出等。如果你還在用echo手動拼接空格或者tab 來實現對齊,那麼現在是時候讓sprintf()str_pad()幫你輕鬆搞定這些事情了。

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

輸出結果整齊劃一,不論數字多大、小數位多少,都能對齊展示。

二、str_pad(): 輕鬆實現字符填充

sprintf()雖然強大,但在某些情況下我們只需要對字符串進行簡單的左右對齊和填充,這時str_pad()就派上用場了。

str_pad() 函數簽名:

 str_pad(string $string, int $length, string $pad_string = " ", int $pad_type = STR_PAD_RIGHT): string
  • $string :原始字符串

  • $length :填充後總長度

  • $pad_string :用於填充的字符

  • $pad_type :填充方向,可選STR_PAD_RIGHTSTR_PAD_LEFTSTR_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

對齊效果一目了然!

三、sprintf() 和str_pad() 的組合拳

當然,兩個函數也可以聯合使用,適用於更複雜的排版需求。例如,我們可以用sprintf()處理格式精度,再通過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()適合對字符串進行寬度補齊和左右居中操作;

  • 兩者結合使用,可以讓輸出排版變得更加靈活而強大。

掌握這兩個函數,就可以輕鬆打造美觀、整齊的文本輸出界面,無論是命令行工具、日誌打印,還是後台管理頁面的調試輸出,都能游刃有餘。讓你的PHP 程序看起來更專業,從輸出開始!