ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

    เราได้รับอาร์เรย์มา ซึ่งประกอบด้วยวันที่ หลายๆวันที่ ในรูปแบบ (Y-m-d) และเราต้องเขียนโปรแกรมใน PHP เพื่อเรียงลำดับวันที่ทั้งหมดที่อยู่ในอาร์เรย์จากมากไปน้อย 

ตัวอย่าง input และ output

Input : array("2018-06-04", "2014-06-08", "2018-06-05")
Output : 2018-06-05  2018-06-04  2014-06-08

Input : array("2016-09-12", "2009-09-08", "2009-09-09")
Output : 2016-09-12  2009-09-09  2009-09-08

เพื่อแก้ปัญหานี้ในC / C++ / Java หรือภาษาโปรแกรมอื่น ๆ เราจะต้องเปรียบเทียบวันที่ตามปีเดือนและสุดท้ายตามวันโดยเก็บไว้ในโครงสร้างใด ๆ หรือโครงสร้างข้อมูลที่ต้องการอื่น ๆ แต่ใน PHP  ปัญหานี้ดูเหมือนจะง่ายมากถ้าเราใช้ฟังก์ชั่น strtotime ()    ฟังก์ชั่น strtotime()  เป็นฟังก์ชั่น PHP ที่ใช้เปลี่ยนวันที่ที่กำหนดในรูปแบบใด ๆ ที่เป็น  timestamp  ซึ่งเป็นจำนวนเต็มขนาดใหญ่ integer โดยปกติแล้วติแล้วในการเรียงลำดับอาร์เรย์เราสามารถใช้ ฟังก์ชั่น usort()  โดยการกำหนดฟังก์ชั่นเปรียบเทียบ ฟังก์ชันตัวเปรียบเทียบจะยอมรับอาร์กิวเมนต์ของวันที่ สองค่าซึ่งจะถูกแปลงเป็นเวลาจำนวนเต็มโดยใช้ฟังก์ชั่น strtotime () จากนั้นเปรียบเทียบกับวันที่จัดเรียงตาม  timestamp พอจะเข้าใจหลักการแล้วใช่ไหมครับ เรามาดูกัน 

ฟังก์ชั่น Inbuilt ที่ใช้:

  •  strtotime(): ฟังก์ชันนี้เปลี่ยนสตริงวันที่ที่กำหนดเป็น timestamp (ค่า integer )
  • usort(): ฟังก์ชั่นนี้จะเรียงลำดับอาร์เรย์ที่กำหนดตามฟังก์ชั่นการเปรียบเทียบที่กำหนด

 

ตัวอย่างโค้ดดังนี้

<?php 
// PHP program to sort array of dates 

// user-defined comparison function 
// based on timestamp 
function compareByTimeStamp($time1, $time2) 
{ 
	if (strtotime($time1) < strtotime($time2)) 
		return 1; 
	else if (strtotime($time1) > strtotime($time2)) 
		return -1; 
	else
		return 0; 
} 

// Input Array 
$arr = array("2016-09-12", "2009-09-06", "2009-09-09"); 

// sort array with given user-defined function 
usort($arr, "compareByTimeStamp"); 

print_r($arr); 

?> 

ผลลัพธ์ที่ได้

Array 
( 
    [0] => 2016-09-12 
    [1] => 2009-09-09 
    [2] => 2009-09-06 
)

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

ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : ฟังก์ชัน PHP

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ขั้นตอนการอัดวิดิโอ
โดย numtan5839 พฤ 07 พ.ย. 2019 2:31 pm บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
1
10
พฤ 07 พ.ย. 2019 2:47 pm โดย thatsawan
วิธีการเพิ่มค่าลดค่า array แต่ละค่าใน php
โดย jamepiyawat พฤ 07 พ.ย. 2019 2:11 pm บอร์ด PHP Knowledge
0
35
พฤ 07 พ.ย. 2019 2:11 pm โดย jamepiyawat
วิธีการใช้ curl เพื่อขอข้อมูลเว็บไซต์
โดย jamepiyawat พฤ 07 พ.ย. 2019 1:46 pm บอร์ด PHP Knowledge
0
38
พฤ 07 พ.ย. 2019 1:46 pm โดย jamepiyawat
Joomla 3.9.13 พร้อมให้อัปเดตแล้ว ปรับปรุงความปลอดภัยและระบบให้ดีขึ้น
โดย tsukasaz พฤ 07 พ.ย. 2019 1:14 pm บอร์ด MindPHP News / Feedback
0
78
พฤ 07 พ.ย. 2019 1:14 pm โดย tsukasaz
VDO - การแนบไฟล์รูปภาพในบอร์ด Mindphp
โดย numtan5839 พฤ 07 พ.ย. 2019 12:28 pm บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
3
27
พ 13 พ.ย. 2019 6:22 pm โดย mindphp
ทำไมข้อมูลของใบแจ้งหนี้ถึงไม่แสดงเมื่อกดHeader for report บนระบบERP
โดย nnamfon.26 พฤ 07 พ.ย. 2019 12:13 pm บอร์ด OpenERP - MD-ERP (Main)
5
17
พฤ 07 พ.ย. 2019 6:35 pm โดย mindphp
จะทำอย่างไรให้เราดึงข้อมูล Email ของ admin joomal ออมมาได้ครับ
โดย jamepiyawat พฤ 07 พ.ย. 2019 11:37 am บอร์ด Joomla Development
4
83
ศ 08 พ.ย. 2019 2:32 pm โดย tsukasaz
ผู้ป่วย 4 โรคเรื้อรัง และมีสิทธิบัตรทอง สามารถขอรับยาที่ร้านขายยาใกล้บ้านได้แล้ว
โดย promotion พฤ 07 พ.ย. 2019 11:16 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
35
พฤ 07 พ.ย. 2019 11:16 am โดย promotion
ทำความเข้าใจกับตัวอักษรที่นำหน้าเลขพัสดุ
โดย numtan5839 พฤ 07 พ.ย. 2019 11:04 am บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
71
พฤ 07 พ.ย. 2019 11:04 am โดย numtan5839
งานประจำวันที่ 7 พฤศจิกายน 2562
โดย numtan5839 พฤ 07 พ.ย. 2019 10:07 am บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
9
78
ศ 08 พ.ย. 2019 2:01 pm โดย numtan5839
อยากทราบวิธีการปรับแก้ไข ค่าของคอลลัม in_message ในการแนบไฟล์รูปภาพของ pm ใน phpbb
โดย Ittichai_chupol พ 06 พ.ย. 2019 6:11 pm บอร์ด Programming - PHP
4
109
พ 06 พ.ย. 2019 6:47 pm โดย Ittichai_chupol
4 ขั้นตอนง่ายๆในการทำ Infographic ด้วย Photoshop
โดย numtan5839 พ 06 พ.ย. 2019 6:36 pm บอร์ด Graphic design
0
53
พ 06 พ.ย. 2019 6:36 pm โดย numtan5839
วิธีการสร้าง Brand identity ด้วยโปรแกรม Canva
โดย numtan5839 พ 06 พ.ย. 2019 5:13 pm บอร์ด Graphic design
0
47
พ 06 พ.ย. 2019 5:13 pm โดย numtan5839
ออกแบบ UI ง่ายๆด้วย Adobe illustrator
โดย numtan5839 พ 06 พ.ย. 2019 3:57 pm บอร์ด Graphic design
0
56
พ 06 พ.ย. 2019 3:57 pm โดย numtan5839
การใช้ API ของไปรษณีย์ไทย
โดย bankjittapol พ 06 พ.ย. 2019 2:51 pm บอร์ด PHP Knowledge
0
64
พ 06 พ.ย. 2019 2:51 pm โดย bankjittapol
การปัดเศษ สรรพกรยอมรับการปัดเศษ เเบบรายสินค้า หรือ ยอดรวม ค่ะ
โดย thatsawan พ 06 พ.ย. 2019 11:15 am บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
49
พ 06 พ.ย. 2019 11:15 am โดย thatsawan
ผู้เล่นตัวจริงในสนาม (Football Lineup) แผนการเล่น เริ่มต้นใน สนาม ผู้เล่นชุดแรก และการจัดตัว
โดย bankjittapol พ 06 พ.ย. 2019 10:49 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
55
พ 06 พ.ย. 2019 10:49 am โดย bankjittapol
งานประจำวันที่ 6 พฤศจิกายน 2562
โดย numtan5839 พ 06 พ.ย. 2019 10:19 am บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
5
44
พ 06 พ.ย. 2019 6:47 pm โดย numtan5839
ขอ code วนลูป และเก็บใน dictionary
โดย Anonymous อ 05 พ.ย. 2019 7:08 pm บอร์ด Programming - C/C++ & java & Python
1
151
อ 05 พ.ย. 2019 8:07 pm โดย mindphp
max_allowed_packet คืออะไร ฐานข้อมูล MySQL , mariadb
โดย mindphp อ 05 พ.ย. 2019 5:46 pm บอร์ด SQL Knowledge
0
52
อ 05 พ.ย. 2019 5:46 pm โดย mindphp