String formatting
ในภาษา PHP มีฟังก์ชันในการจัดรูปแบบของ String ที่เรียกว่า Format string คือฟังก์ชัน sprintf()
ซึ่งเป็นฟังก์ชันสำหรับจัดรูปแบบของ String หรือตัวเลขเพื่อให้แสดงผลได้ในรูปแบบต่างๆ ที่กำหนดโดย Type specifiers เป็นรูปแบบของการแสดงผลของฟังก์ชัน
string sprintf ( string $format [, mixed $args [, mixed $... ]] )
พารามิเตอร์ตัวแรกเป็นรูปแบบของ String ที่กำหนดโดย Type specifiers พารามิเตอร์ตัวที่สองเป็นต้นไปเป็นรายการของตัวแปรที่สอดคล้องกับ Type specifiers ที่ได้กำหนดในรูปแบบของ String และฟังก์ชันนี้จะส่งค่ากลับเป็น String
นี่เป็นรายการของ Type specifiers ที่ใช้กำหนดสำหรับพารามิเตอร์ตัวแรกของฟังก์ชัน sprintf()
- %% - แสดงตัวอักษรเปอร์เซนต์ ไม่มีอากิวเมนต์
- %b - อากิวเมนต์แบบ Integer และแสดงผลในเลขฐานสอง
- %c - อากิวเมนต์แบบ Integer และแสดงค่ารหัส ASCII เป็น Integer
- %d - อากิวเมนต์แบบ Integer แสดงผลลัพธ์แบบ Integer ที่มีเครื่องหมาย
- %e - อากิวเมนต์แบบ Float แสดงผลลัพธ์แบบสัญกรณ์วิทยาศาสตร์
- %E - อากิวเมนต์แบบ Float แสดงผลลัพธ์แบบสัญกรณ์วิทยาศาสตร์
- %f - อากิวเมนต์แบบ Float แสดงผลลัพธ์แบบ Float (locale aware)
- %F - อากิวเมนต์แบบ Float แสดงผลลัพธ์แบบ Float (non-locale aware)
- %g - รูปแบบสั้นของ %e และ %f
- %G - รูปแบบสั้นของ %E และ %F
- %o - อากิวเมนต์แบบ Integer และแสดงผลในเลขฐานแปด
- %s - อากิวเมนต์แบบ String แสดงผลลัพธ์แบบ String
- %u - อากิวเมนต์แบบ Integer แสดงผลลัพธ์แบบ Integer ที่ไม่มีเครื่องหมาย
- %x - อากิวเมนต์แบบ Integer และแสดงผลในเลขฐานสิบหก (ตัวพิมพ์เล็ก)
- %X - อากิวเมนต์แบบ Integer และแสดงผลในเลขฐานสิบหก (ตัวพิมพ์ใหญ่)
การแสดงผลด้วยฟังก์ชัน sprintf()
ต่อไปมาดูตัวอย่างการใช้งานของฟังก์ชัน sprintf()
สำหรับการจัดรูปแบบ String และตัวเลขในแบบต่างๆ เราจะเริ่มจากการแสดงผลข้อความและตัวเลข
<?php
$name = "Mateo";
$score = 38;
echo sprintf("%s love playing game.\n", $name);
echo sprintf("%s play a game and his score is %d.\n", $name, $score);
?>
ในตัวอย่าง เป็นการแสดงผลข้อความและตัวเลขด้วยฟังก์ชัน sprintf()
พารามิเตอร์ตัวแรกของเป็นรูปแบบของ String ซึ่งเราได้กำหนด Type specifier ที่ต้องการภายใน String นี้ และพารามิเตอร์ตัวที่สองเป็นต้นไป เป็นค่าของ Type specifier ที่เราได้กำหนดในพารามิเตอร์แรกของฟังก์ชัน
sprintf("%s love playing game.\n", $name);
ในคำสั่งนี้ เป็นการแสดงผลข้อความโดยค่าในตัวแปร $name
จะถูกนำไปแทนที่ใน %s
sprintf("%s play a game and his score is %d.\n", $name, $score)
ในคำสั่งนี้เรามี Type specifier สองตัวคือ %s
และ %d
ดังนั้นเราจึงส่งอากิวเมนต์เป็น $name
และ $score
ซึ่งเป็นข้อมูลที่แสดงใน Type specifier ตามลำดับ
Mateo love playing game.
Mateo play a game and his score is 38.
นี่เป็นผลลัพธ์การทำงานของโปรแกรม Type specifier ทั้งหมดถูกแทนที่ด้วยค่าของตัวแปรแทน
การแสดงตัวเลขด้วยฟังก์ชัน sprintf()
ในภาษา PHP คุณยังสามารถใช้ฟังก์ชัน sprintf()
เพื่อแสดงผลตัวเลขในรูปแบบต่างๆ เช่น ในฐานอื่นหรือข้อมูลประเภทอื่น มาดูตัวอย่างการใช้งาน
<?php
$number = 28;
echo sprintf("Type\tValue\n");
echo sprintf("%%d\t%d\n", $number);
echo sprintf("%%b\t%b\n", $number);
echo sprintf("%%e\t%e\n", $number);
echo sprintf("%%E\t%E\n", $number);
echo sprintf("%%f\t%f\n", $number);
echo sprintf("%%F\t%F\n", $number);
echo sprintf("%%o\t%o\n", $number);
echo sprintf("%%u\t%u\n", $number);
echo sprintf("%%x\t%x\n", $number);
echo sprintf("%%X\t%X\n", $number);
?>
ในตัวอย่าง เป็นการแสดงค่าของ 28 ซึ่งเป็นค่าในฐานสิบในรูปแบบต่างๆ ซึ่ง Type specifier แต่ละประเภทนั้นมีการแสดงผลที่แตกต่างกันออกไปถึงแม้ว่าจะเป็นค่าเดียวกันก็ตาม
Type Value
%d 28
%b 11100
%e 2.800000e+1
%E 2.800000E+1
%f 28.000000
%F 28.000000
%o 34
%u 28
%x 1c
%X 1C
นี่เป็นผลลัพธ์การทำงานของโปรแกรม คุณจะเห็นว่าการแสดงผลของเลข 28 นั้นแตกต่างกัน แต่ค่าเหล่านี้เป็นค่าเดียวกัน เช่นเมื่อคุณเปรียบเทียบ 28 == 11100b
จะได้ผลลัพธ์เป็นจริง เพราะว่า 11100b
นั้นคือ 28 ในฐานสอง
ต่อไปเป็นตัวอย่างในการใช้งานของฟังก์ชันในการจัดรูปแบบกับการแสดงผลตัวเลขทศนิยมและตัวเลขจำนวนเต็ม
<?php
$number = 28.848315;
echo sprintf("%f\n", $number);
echo sprintf("%.2f\n", $number);
echo sprintf("%.4f\n", $number);
$number2 = 28;
echo sprintf("%5d\n", $number2);
echo sprintf("%'.5d\n", $number2);
echo sprintf("%'05d\n", $number2);
?>
คุณสามารถกำหนดการแสดงจำนวนหลักของจุดทศนิยมได้โดยการกำหนด Type specifier เช่น %.nf
โดยที่ n เป็นจำนวนหลักของทศนิยมที่คุณต้องการแสดง
สำหรับในตัวแปร $number2
นั้นเป็นการใส่ข้อความในรูปแบบ Pad left โดยการกำหนด Type specifier ในรูปแบบ %nd
หรือ %'mnd
เมื่อ n เป็นจำนวนตัวอักษรทั้งหมด และ m เป็นตัวอักษรที่ต้องการเติมใส่ทางด้านซ้าย
28.848315
28.85
28.8483
28
...28
00028
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
การจัดรูปแบบของข้อความ String
ต่อไปเป็นตัวอย่างในการจัดรูปแบบของ String โดยการเพิ่มข้อความหรือที่เรียกกว่า Padding Strings ในภาษา PHP
<?php
$lang = "PHP";
$site = "marcuscode.com";
echo sprintf("[%s]\n", $lang);
echo sprintf("[%10s]\n", $lang);
echo sprintf("[%-10s]\n", $lang);
echo sprintf("[%010s]\n", $lang);
echo sprintf("[%'#10s]\n", $lang);
echo sprintf("[%10.10s]\n", $site);
?>
ในตัวอย่าง เป็นการแสดงผลของ String "PHP"
ในรูปแบบต่างๆ โดยการจัดรูปแบบ String
echo sprintf("[%10s]\n", $lang);
echo sprintf("[%-10s]\n", $lang);
เราเพิ่มจำนวนเต็มบวกสำหรับเติม String ในทางซ้าย และจำนวนเต็มลบสำหรับเต็ม String ในทางขวาในตัวอย่าง %10s
เป็นการแสดง String ทั้งหมดที่มีขนาด 10 โดยเติมช่องว่างจากทางด้านซ้าย (Left padding) และ -10 สำหรับเติมช่องว่างจากทางด้านขวา (Right padding)
echo sprintf("[%010s]\n", $lang);
echo sprintf("[%'#10s]\n", $lang);
คุณสามารถใช้ตัวเลข ตัวอักษร หรือสัญลักษณ์อื่นๆ ได้ ดังในตัวอย่าง คำสั่งแรกเป็นการเพิ่ม 0 ทางซ้ายของ String ให้มีขนาดเป็น 10 คำสั่งที่สองเป็นการเพิ่มเครื่องหมาย # โดยเครื่องหมายจะต้องขึ้นต้นด้วย '
เสมอ
echo sprintf("[%10.10s]\n", $site);
ในคำสั่งนี้ เป็นการแสดงข้อความที่มีขนาด 10 โดยตัดเอาเพียงแค่ 10 ตัวอักษรจาก String "marcuscode.com"
[PHP]
[ PHP]
[PHP ]
[0000000PHP]
[#######PHP]
[marcuscode]
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
การใช้ฟังก์ชัน number_format()
ในภาษา PHP คุณสามารถใช้ฟังก์ชัน number_format()
สำหรับจัดรูปแบบของตัวเลข เช่น การแสดงผลในรูปแบบของเงินหรือจำนวนที่มีเครื่องหมาย ,
แบ่งในหลักพัน มาดูตัวอย่างการใช้งานของฟังก์ชัน
<?php
$number = 1272.831931;
echo $number . "\n";
echo number_format($number) . "\n";
echo number_format($number, 2) . "\n";
$money = 36471.90;
echo number_format($money, 2, ".", ",") . "\n"; // US format
echo number_format($money, 2, ",", ".") . "\n"; // English format
echo number_format($money, 2, "/", "-") . "\n"; // Custom format
?>
ในตัวอย่าง เป็นการแสดงตัวเลขโดยการจัดรูปแบบในแบบต่างๆ ซึ่งฟังก์ชันนี้สามารถใส่ได้ตั้งแต่หนึ่ง สอง และสี่พารามิเตอร์
echo number_format($number) . "\n";
echo number_format($number, 2) . "\n";
หากคุณใส่เพียงพารามิเตอร์แรก จะเป็นการแสดงตัวเลข Integer และมีเครื่องหมายคอมมา ,
เป็นตัวแบ่งในหลักพัน และพารามิเตอร์ที่สองเป็นการกำหนดจำนวนทศนิยมหลังจุด .
ฟังก์ชันนี้มีการปัดตัวสำหรับทศนิยมที่มากกว่า 5 และปัดทิ้งตัวเลขหลังจุดท้งถ้าหากน้อยกว่า 5
$money = 36471.90;
echo number_format($money, 2, ".", ",") . "\n"; // US format
echo number_format($money, 2, ",", ".") . "\n"; // English format
echo number_format($money, 2, "/", "-") . "\n"; // Custom format
และหากคุณใส่ทั้งพารามิเตอร์ทั้งหมด ในพารามิเตอร์ที่สามจะเป็นการกำหนดตัวคั่นระหว่างจำนวนเต็มและทศนิยม และพารามิเตอร์ที่สี่เป็นตัวแบ่งในหลักพัน
1272.831931
1,273
1,272.83
36,471.90
36.471,90
36-471/90
นี่เป็นผลลัพธ์การทำงานของโปรแกรม เราได้แสดงตัวเลขในจำนวนทศนิยมที่ต่างกัน และทำการเปลี่ยนตัวคั่นของทศนิยม และหลักพันในรูปแบบของอเมริกาและอังกฤษ และแบบกำหนดเอง
ในบทนี้คุณได้เรียนรู้เกี่ยวกับฟังก์ชัน sprintf()
และฟังก์ชัน number_format()
ซึ่งเป็นฟังก์ชันสำหรับจัดรูปแบบของ String และตัวเลขในภาษา PHP