在日常的PHP 編程中,我們經常需要輸出整齊對齊的數據,比如表格形式的列表、日誌記錄格式、命令行輸出等。如果你還在用echo手動拼接空格或者tab 來實現對齊,那麼現在是時候讓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
$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
對齊效果一目了然!
當然,兩個函數也可以聯合使用,適用於更複雜的排版需求。例如,我們可以用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 程序看起來更專業,從輸出開始!