การเขียนโปรแกรม PHP เพื่อดึงค่าเวลาออกจากวันที่ที่มีเวลาต่อท้ายด้วยฟังก์ชั่น explode(), strrchar(), substr()
บางครั้งอาจจะมีงานที่ต้องการให้เราเขียนโปรแกรมแสดงวันที่บนหน้าเว็บเพจ
หรือให้เขียนโปรแกรมแสดงเวลาปัจจุบัน หรือเวลาที่ทำรายการบนหน้าเว็บไซต์ หรือหน้ารายงานต่างๆ ซึ่งวิธีการปกติที่ผมใช้คือการแยกข้อความ เพื่อแยกวันที่ออกจากเวลาด้วยช่องว่าง จากนั้นก็จะได้อาร์เรย์ไปใช้งานต่อไป
วิธีที่ 1 ใช้ฟังก์ชั่น explode() ซึ่งจะคืนค่ากลับมาเป็นอาร์เรย์ เราก็จะต้องสร้างตัวแปรรับค่าและเมื่อจะเรียกใช้ข้อมูลในตัวแปรก็จะใช้การอ้างอิงตัวเลขลำดับที่ได้จากการแยกข้อความ
จากโค๊ดด้านบนผมได้สร้างตัวแปรรับค่าอาร์เรย์ชื่อ $dataArray ซึ่งจะเก็บข้อมูลวันที่ในลำดับ [0] และเก็บเวลาไว้ที่ลำดับ [1] ดังนั้นถ้าจะแสดงเวลาก็ให้เรียกใช้ $dataArray[1]
วิธีที่ 2 ใช้ฟังก์ชั่น strrchar() จะคืนค่าออกมาเป็นสตริง คือสามารถเรียกใช้ได้เลยโดยไม่ต้องสร้างตัวแปรรับค่าก็ได้ (การสร้างตัวแปรควรจะใช้เฉพาะกรณีเรียกใช้ในอีกหลายๆที่ หรือใช้รับค่าอาร์เรย์เท่านั้น) เพียงแค่เราระบุคำที่ต้องการใช้แยกข้อความออกจากกัน เราก็จะได้ข้อความทั้งหมดที่อยู่จากคำที่กำหนดทันที
แบบที่ 3 เป็นการตัดข้อความโดยนับตำแหน่งที่ต้องการด้วย substr() ซึ่งฟังก์ชั่นนี้เหมาะกับข้อความที่มีขนาดคงที่นับจำนวนได้เท่ากันตลอดไม่เปลี่ยนแปลง เช่นวันเวลา "yyyy-mm-dd hh:mm:ss" ซึ่งนับจำนวนแล้วจะมีความยาว 19 ตัวอักษรไม่เปลี่ยนแปลง
สรุปต่อท้ายอีกนิด
กรณีที่ต้องการแยกข้อมูล วันและเวลา และนำไปใช้ทั้ง 2 ค่าแนะนำให้ใช้ explode ซึ่งจะได้อาร์เรย์ลำดับที่ [0] และ [1] ไปใช้งานได้ทันที
แต่ถ้าต้องการแค่เวลา ก็ใช้ strrchar() หรือ substr() ก็ได้ตามแต่สะดวก
แล้วถ้าต้องการแค่วันที่อย่างเดียวล่ะ ก็ใช้การตัดข้อความโดยเริ่มจากตำแหน่ง 0 ไปอีกเท่ากับตำแหน่งสุดท้ายก็คือวันที่ ก่อนช่องว่างในที่นี้คือ substr($date, 0, 10) ก็จะได้วันที่มาใช้งาน
และสุดท้ายเรื่องของตัวแปร
การสร้างตัวแปรรับค่าก่อนที่จะนำไปแสดงผลนั้น บ้างก็ว่าไม่จำเป็นใช้หน่วยความจำโดยไม่จำเป็น บ้างก็ว่าเพื่อความสวยงามของโค๊ด ผมมีหลักพิจารณาง่ายๆว่าจะใช้ตัวแปรเมื่อไหร่ ดังนี้
1) เมื่อต้องนำไปใช้ต่อในอีกหลายๆที่ ควรประกาศตัวแปร
2) เมื่อต้องการรับค่าจากอาร์เรย์ จำเป็นจะต้องมีตัวแปรรับค่าก่อน
แต่ถ้าต้องการแสดงผลทันทีจะสั่ง echo strrchr($date, ' '); ฟังก์ชั่นไปเลยโดยไม่ต้องมีตัวแปร $time มารับค่าก่อนก็ย่อมได้
วิธีที่ 1 ใช้ฟังก์ชั่น explode() ซึ่งจะคืนค่ากลับมาเป็นอาร์เรย์ เราก็จะต้องสร้างตัวแปรรับค่าและเมื่อจะเรียกใช้ข้อมูลในตัวแปรก็จะใช้การอ้างอิงตัวเลขลำดับที่ได้จากการแยกข้อความ
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>ทดสอบฟังก์ชั่น PHP แยกคำที่ต้องการ ออกจากข้อความทั้งหมดแบบมีตัวคั่น ด้วยฟังก์ชั่น explode()</title>
</head>
<body>
<?php
$date = '2014-06-21 13:40:31';
$dataArray = explode(' ', $date);
echo "เวลา คือ ", $dataArray[1];
?>
</body>
</html>
จากโค๊ดด้านบนผมได้สร้างตัวแปรรับค่าอาร์เรย์ชื่อ $dataArray ซึ่งจะเก็บข้อมูลวันที่ในลำดับ [0] และเก็บเวลาไว้ที่ลำดับ [1] ดังนั้นถ้าจะแสดงเวลาก็ให้เรียกใช้ $dataArray[1]
วิธีที่ 2 ใช้ฟังก์ชั่น strrchar() จะคืนค่าออกมาเป็นสตริง คือสามารถเรียกใช้ได้เลยโดยไม่ต้องสร้างตัวแปรรับค่าก็ได้ (การสร้างตัวแปรควรจะใช้เฉพาะกรณีเรียกใช้ในอีกหลายๆที่ หรือใช้รับค่าอาร์เรย์เท่านั้น) เพียงแค่เราระบุคำที่ต้องการใช้แยกข้อความออกจากกัน เราก็จะได้ข้อความทั้งหมดที่อยู่จากคำที่กำหนดทันที
<!DOCTYPE html>จากโค๊ดด้านบนผมได้สร้างตัวแปร $time รับค่าที่คืนกลับมาจากฟังก์ชั่น strrchar() ซึ่งคำที่กำหนดคือช่องว่าง ดังนั้นก็จะได้ข้อความทั้งหมดที่อยู่ถัดจากช่องว่าง นั่นก็คือ เวลาที่ต้องการนั่นเอง
<html lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>ทดสอบฟังก์ชั่น PHP แยกคำที่ต้องการ ออกจากข้อความทั้งหมดแบบมีตัวคั่น ด้วยฟังก์ชั่น strrchr()</title>
</head>
<body>
<?php
$date = '2014-06-21 13:40:31';
$time = strrchr($date, ' ');
echo "เวลา คือ ", $time;
?>
</body>
</html>
แบบที่ 3 เป็นการตัดข้อความโดยนับตำแหน่งที่ต้องการด้วย substr() ซึ่งฟังก์ชั่นนี้เหมาะกับข้อความที่มีขนาดคงที่นับจำนวนได้เท่ากันตลอดไม่เปลี่ยนแปลง เช่นวันเวลา "yyyy-mm-dd hh:mm:ss" ซึ่งนับจำนวนแล้วจะมีความยาว 19 ตัวอักษรไม่เปลี่ยนแปลง
<!DOCTYPE html>จากโค๊ดด้านบนตัวแปร $time จะเก็บข้อมูลจากการตัดข้อความตำแหน่งที่ 11 เป็นต้นไป นั่นก็คือ ส่วนที่อยู่ต่อจากวันที่ "2014-06-21 " ที่นับรวมช่องว่างคือ 11 ตัว ก็จะได้ค่า 13:40:31 ที่เริ่มตั้งแต่ตำแหน่งที่ 12 เป็นต้นไป
<html lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>ทดสอบฟังก์ชั่น PHP แยกคำที่ต้องการ ออกจากข้อความทั้งหมด ด้วยการตัดคำโดยใช้ฟังก์ชั่น substr()</title>
</head>
<body>
<?php
$date = '2014-06-21 13:40:31';
$time = substr($date, 11);
echo "เวลา คือ ", $time;
?>
</body>
</html>
สรุปต่อท้ายอีกนิด
กรณีที่ต้องการแยกข้อมูล วันและเวลา และนำไปใช้ทั้ง 2 ค่าแนะนำให้ใช้ explode ซึ่งจะได้อาร์เรย์ลำดับที่ [0] และ [1] ไปใช้งานได้ทันที
แต่ถ้าต้องการแค่เวลา ก็ใช้ strrchar() หรือ substr() ก็ได้ตามแต่สะดวก
แล้วถ้าต้องการแค่วันที่อย่างเดียวล่ะ ก็ใช้การตัดข้อความโดยเริ่มจากตำแหน่ง 0 ไปอีกเท่ากับตำแหน่งสุดท้ายก็คือวันที่ ก่อนช่องว่างในที่นี้คือ substr($date, 0, 10) ก็จะได้วันที่มาใช้งาน
และสุดท้ายเรื่องของตัวแปร
$dataArray = explode(' ', $date);และ
$time = strrchr($date, ' ');
การสร้างตัวแปรรับค่าก่อนที่จะนำไปแสดงผลนั้น บ้างก็ว่าไม่จำเป็นใช้หน่วยความจำโดยไม่จำเป็น บ้างก็ว่าเพื่อความสวยงามของโค๊ด ผมมีหลักพิจารณาง่ายๆว่าจะใช้ตัวแปรเมื่อไหร่ ดังนี้
1) เมื่อต้องนำไปใช้ต่อในอีกหลายๆที่ ควรประกาศตัวแปร
2) เมื่อต้องการรับค่าจากอาร์เรย์ จำเป็นจะต้องมีตัวแปรรับค่าก่อน
แต่ถ้าต้องการแสดงผลทันทีจะสั่ง echo strrchr($date, ' '); ฟังก์ชั่นไปเลยโดยไม่ต้องมีตัวแปร $time มารับค่าก่อนก็ย่อมได้
PHP CI MANIA - PHP Code Generator
โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ความคิดเห็น
แสดงความคิดเห็น