StepCoding

กำหนดรูปแบบการแสดงผลด้วย printf()

อ่าน [1265] หมวดหมู่: String

ฟังก์ชัน printf() เป็นการแสดงผล string ตามรูปแบบที่กำหนด ซึ่งฟังก์ชันนี้ มีลักษณะเช่นเดียวกับภาษา C เนื่องจากมันสืบทอดมาจากภาษา C นั่นเอง ซึ่งพารามิเตอร์ตัวแรกของฟังก์ชันนี้จะต้องเป็นรูปแบบที่ต้องการแสดงผลตามที่เรากำหนด ส่วนพารามิเตอร์ตัวต่อ ๆ ไปนั้นจะต้องเป็นค่าที่ต้องการแทนที่ไปยังรูปแบบนั้น ๆ เช่น

<?php
printf('%.2f', 500.2012931);
// 500.20

printf('Today is %04d-%02d-%02d', 2009, 1, 9);
// Today is 2009-01-09
?>

จะเห็นว่าค่าที่กำหนดในพารามิเตอร์ ตัวที่ 2, 3, ... นั้นจะเข้าไปแทนที่ในรูปแบบที่กำหนดไว้ในพารามิเตอร์ตัวแรก โดยมันจะแทนส่วนที่ขึ้นต้นด้วย % ตามด้วยรูปแบบที่มันกำหนดไว้ (ผมจะแสดงตารางรูปแบบไว้ด้านล่างนี้) เช่นในตัวอย่างใช้ %.2f หมายความว่าให้แสดงจุดทศนิยมเพียง 2 ตัวก็พอ และ %02d หมายความว่าให้แสดงตัวเลขสองหลัก เป็นต้น

Specifierความหมาย
Bต้องส่งพารามิเตอร์เป็น integer และจะถูกแสดงผลเป็น binary number
Cต้องส่งพารามิเตอร์เป็น integer และจะถูกแสดงผลเป็นตัวอักษร
Dต้องส่งพารามิเตอร์เป็น integer และจะถูกแสดงผลเป็น decimal number
e หรือ fต้องส่งพารามิเตอร์เป็น double และจะถูกแสดงผลเป็น floating-point[/storng] number
Gต้องส่งพารามิเตอร์เป็น double แบบ precision และจะถูกแสดงผลเป็น floating-point
Oต้องส่งพารามิเตอร์เป็น integer และจะถูกแสดงผลเป็นเลขฐานแปด
Sต้องส่งพารามิเตอร์เป็น string และจะถูกแสดงผลเป็น string
Uต้องส่งพารามิเตอร์เป็น integer แบบ unsigned (ไม่มีเครื่องหมาย) และจะถูกแสดงผลเป็น decimal number
xต้องส่งพารามิเตอร์เป็น integer และจะถูกแสดงผลเป็นเลขฐานสิบหก (แบบตัวอักษรตัวเล็ก)
Xต้องส่งพารามิเตอร์เป็น integer และจะถูกแสดงผลเป็นเลขฐานสิบหก (แบบตัวอักษรตัวใหญ่)

แต่ถ้าเราต้องการให้มันแสดงผลเครื่องหมาย '%' ในรูปแบบที่กำหนดนั้น เราจะต้องใส่ '%' ซ้อนเข้าไปเช่น '%%' เป็นต้น

printf('%.2f', 27.452);
// 27.45

printf('The hex value of %d is %x', 214, 214);
// The hex value of 214 is d6

printf('Genetic. Employee Code: %05d.', 212);
// Genetic. Employee Code: 00212

printf('%02d/%02d/%04d', $month, $day, $year);
// 09/28/2009

printf('%.2f%% Complete', 2.1);
// 2.10% Complete

printf('You've spent $%5.2f so far', 4.1);
// You've spent $ 4.10 so far
?>

ฟังก์ชัน sprintf() มีลักษณะเหมือนกับฟังก์ชัน printf() แต่มันจะทำการคืนค่าเป็น string กลับมาแทนการแสดงผลออกมา ซึ่งจะทำให้เราสามารถนำตัวแปรไปเก็บค่านั้น ๆ ได้ (จะต่างจาก printf() ตรงที่มันจะทำการแสดงผลออกมาเลย ไม่สามารถนำตัวแปรไปเก็บค่าได้) เช่น

<?php
$date = sprintf('%04d-%02d-%02d', $year, $month, $day);
echo $date;
// 2009-09-28
?>

ผู้สนับสนุน