在日常的 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 程序看起来更专业,从输出开始!