ข้ามไปที่เนื้อหาหลัก

การเขียนโปรแกรม PHP เพื่อดึงค่าเวลาออกจากวันที่ที่มีเวลาต่อท้ายด้วยฟังก์ชั่น explode(), strrchar(), substr()

          บางครั้งอาจจะมีงานที่ต้องการให้เราเขียนโปรแกรมแสดงวันที่บนหน้าเว็บเพจ หรือให้เขียนโปรแกรมแสดงเวลาปัจจุบัน หรือเวลาที่ทำรายการบนหน้าเว็บไซต์ หรือหน้ารายงานต่างๆ ซึ่งวิธีการปกติที่ผมใช้คือการแยกข้อความ เพื่อแยกวันที่ออกจากเวลาด้วยช่องว่าง จากนั้นก็จะได้อาร์เรย์ไปใช้งานต่อไป


วิธีที่ 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>
<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>
จากโค๊ดด้านบนผมได้สร้างตัวแปร $time รับค่าที่คืนกลับมาจากฟังก์ชั่น strrchar() ซึ่งคำที่กำหนดคือช่องว่าง ดังนั้นก็จะได้ข้อความทั้งหมดที่อยู่ถัดจากช่องว่าง นั่นก็คือ เวลาที่ต้องการนั่นเอง



แบบที่ 3 เป็นการตัดข้อความโดยนับตำแหน่งที่ต้องการด้วย substr() ซึ่งฟังก์ชั่นนี้เหมาะกับข้อความที่มีขนาดคงที่นับจำนวนได้เท่ากันตลอดไม่เปลี่ยนแปลง เช่นวันเวลา "yyyy-mm-dd hh:mm:ss" ซึ่งนับจำนวนแล้วจะมีความยาว 19 ตัวอักษรไม่เปลี่ยนแปลง

<!DOCTYPE html>
<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>
จากโค๊ดด้านบนตัวแปร $time จะเก็บข้อมูลจากการตัดข้อความตำแหน่งที่ 11 เป็นต้นไป นั่นก็คือ ส่วนที่อยู่ต่อจากวันที่ "2014-06-21 " ที่นับรวมช่องว่างคือ 11 ตัว ก็จะได้ค่า 13:40:31 ที่เริ่มตั้งแต่ตำแหน่งที่ 12 เป็นต้นไป



สรุปต่อท้ายอีกนิด

กรณีที่ต้องการแยกข้อมูล วันและเวลา และนำไปใช้ทั้ง 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 

โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ราคาสุดคุ้ม  
http://fastcoding.phpcodemania.com

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจกฟรี!! ระบบต่างๆที่พัฒนาด้วย PHP สำหรับนำไปใช้ในงานต่างๆ

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ และด้านล่างนี้ก็เป็นระบบต่างๆที่แจกให้นำไปลองใช้ลองศึกษากันครับ

สอนเขียน PHP แสดงการจองห้องประชุมแบบไฮไลท์ตามช่วงเวลา (แบบเชื่อมต่อฐานข้อมูล MySQL)

ตัวอย่าง ผลลัพธ์ที่ได้จากการจองในฐานข้อมูล ตาราง tb_room สร้างตารางรายชื่อห้องประชุม สำหรับ id นั้นเป็น Primarykey จะกำหนดให้สร้างอัตโนมัติ ทุกครั้งที่เราเพิ่มชื่อห้องประชุมใหม่ -- -- Database: `tobedev_example` -- -- -------------------------------------------------------- -- -- Table structure for table `tb_room` -- CREATE TABLE IF NOT EXISTS `tb_room` (   `id` int(11) NOT NULL,   `name` varchar(30) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- -- Dumping data for table `tb_room` -- INSERT INTO `tb_room` (`id`, `name`) VALUES (1, 'ห้องประชุม 1'), (2, 'ห้องประชุม 2'), (3, 'ห้องประชุม 3'), (4, 'ห้องประชุม 4'), (5, 'ห้องประชุม 5'); -- -- Indexes for dumped tables -- -- -- Indexes for table `tb_room` -- ALTER TABLE `tb_room`   ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tb_room` -- ALTER TABLE `tb_room`   MODIFY `i...

การนำไอคอน มาแสดงบน Fullcalendar

เนื่องจากมีน้องคนหนึ่งให้ช่วยดูโค้ดเกี่ยวกับ Fullcalendar ให้หน่อย แล้วพอดีช่วงนี้ผมก็กำลังสนใจปฏิทิน Fullcalendar อยู่พอดี จึงลองหาสาเหตุที่ไม่สามารถแสดงข้อมูลจาก MySQL และไม่สามารถแทรก icon เข้าไปใน Fullcalendar ได้ จากที่สังเกตุได้ครั้งแรกคือ Error ที่ Console ของ Firefox เกี่ยวกับฟังก์ชั่นที่เขียนผิด และก็มีการ echo ค้างไว้ในส่วนของไฟล์ getCalendar.php ก็เลยจัดการทดสอบแล้วลบ echo ออกให้เหลือแค่ echo json_encode($event_array); ที่ได้ใช้งานจริงเท่านั้น ขั้นตอนการตรวจสอบความถูกต้องของโค้ด PHP 1) ต้องแน่ใจว่าคำสั่งที่เขียนไว้ สามารถดึงข้อมูลมาแสดงผลได้ด้วยการ echo $sql; 2) นำคำสั่งที่ได้ไปรันในโปรแกรมจัดการฐานข้อมูล ในที่นี้คือ phpMyAdmin 3) เมื่อตรวจสอบดูผลลัพธ์ที่ได้ หากถูกต้องมีข้อมูลก็แสดงว่าการ Query ทำงานได้ 4) มาดูการทำงานของ JavaScript ในส่วนของ jQuery มีการแจ้งเตือนที่ฟังก์ชั่น .on() ซึ่งจะใช้กับ jQuery เวอร์ชั่นใหม่เท่านั้น นั่นหมายถึงเวอร์ชั่น jQuery ที่มากับ Fullcalendar เป็นเวอร์ชั่นเก่า ก็ให้เปลี่ยนไปใช้ .live() แทน ก็จะทำงานได้ปกติ 5) ม...