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

    เราได้รับอาร์เรย์มา ซึ่งประกอบด้วยวันที่ หลายๆวันที่ ในรูปแบบ (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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
การใช้ฟังก์ชัน SQRT ใน Excel
โดย numtan5839 จ 11 พ.ย. 2019 11:06 am บอร์ด Microsoft Office Knowledge & line & Etc
0
15
จ 11 พ.ย. 2019 11:06 am โดย numtan5839
งานประจำวันที่ 11 พฤศจิกายน 2562
โดย chaiyasitpraphut จ 11 พ.ย. 2019 10:39 am บอร์ด MT35 - นายชัยยะสิทธิ์ พระพุทธ
3
68
จ 11 พ.ย. 2019 6:05 pm โดย chaiyasitpraphut
Work's on Hand ชัยยะสิทธิ์ พระพุทธ MT35
โดย chaiyasitpraphut จ 11 พ.ย. 2019 10:46 am บอร์ด MT35 - นายชัยยะสิทธิ์ พระพุทธ
0
15
จ 11 พ.ย. 2019 10:46 am โดย chaiyasitpraphut
list ความรู้ที่มี ว่าเคยเรียน หรือ เคยทำอะไรมาบ้าง
โดย chaiyasitpraphut จ 11 พ.ย. 2019 10:44 am บอร์ด MT35 - นายชัยยะสิทธิ์ พระพุทธ
2
56
อ 12 พ.ย. 2019 2:09 pm โดย chaiyasitpraphut
งานประจำวันที่ 11 พฤศจิกายน 2562
โดย numtan5839 จ 11 พ.ย. 2019 10:08 am บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
5
21
จ 11 พ.ย. 2019 7:05 pm โดย numtan5839
คู่เงินยอดนิยมใน Forex สำหรับเทรดเดอร์มือใหม่
โดย numtan5839 ส 09 พ.ย. 2019 5:40 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
57
ส 09 พ.ย. 2019 5:40 pm โดย numtan5839
จะทำอย่างไรให้ php เป็นเวอร์ชั่น 5 ครับ
โดย jamepiyawat ส 09 พ.ย. 2019 5:13 pm บอร์ด Programming - PHP
0
13
ส 09 พ.ย. 2019 5:13 pm โดย jamepiyawat
ฝากเงินเข้าบัญชีกับไปรษณีย์ไทย ด้วยบริการ Bank@post
โดย numtan5839 ส 09 พ.ย. 2019 4:26 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
48
ส 09 พ.ย. 2019 4:26 pm โดย numtan5839
ติดตั้ง joomla เวอร์ชั่น 2.5.28 ไม่ได้ครับ
โดย jamepiyawat ส 09 พ.ย. 2019 2:44 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
1
24
ส 09 พ.ย. 2019 3:39 pm โดย mindphp
ช่วยแนะนำ เกี่ยวกับ javascript library ที่ใช้ทำ รุปภาพให้หน่อยครับ
โดย bankjittapol ส 09 พ.ย. 2019 11:54 am บอร์ด JavaScript & Jquery Ajax
3
51
จ 11 พ.ย. 2019 2:54 pm โดย tsukasaz
ไปรษณีย์ไทยเอาใจ e-commerce ด้วยบริการ ePacket
โดย numtan5839 ส 09 พ.ย. 2019 11:21 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
54
ส 09 พ.ย. 2019 11:21 am โดย numtan5839
งานประจำวันที่ 9 พฤศจิกายน 2562
โดย numtan5839 ส 09 พ.ย. 2019 10:13 am บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
4
28
ส 09 พ.ย. 2019 5:51 pm โดย numtan5839
ส่งค่า value โดยใช้ ajax เพื่อ select php
โดย bankjittapol ศ 08 พ.ย. 2019 5:54 pm บอร์ด Jquery & Ajax Knowledge
0
30
ศ 08 พ.ย. 2019 5:54 pm โดย bankjittapol
ขอสเตทเม้นของกรุงเทพยังใงคะ
โดย ฟ้าลดา ใจงาม ศ 08 พ.ย. 2019 5:40 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
2
34
ศ 08 พ.ย. 2019 6:17 pm โดย mindphp
สกุลเงินที่นิยมที่สุดในตลาด Forex
โดย numtan5839 ศ 08 พ.ย. 2019 4:46 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
24
ศ 08 พ.ย. 2019 4:46 pm โดย numtan5839
ทำความรู้จักกับ Forex ตลาดแลกเปลี่ยนเงินตราต่างประเทศ
โดย numtan5839 ศ 08 พ.ย. 2019 4:03 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
22
ศ 08 พ.ย. 2019 4:03 pm โดย numtan5839
ต้องการ ให้ ajax เปลี่ยน css ใน div
โดย bankjittapol ศ 08 พ.ย. 2019 3:26 pm บอร์ด JavaScript & Jquery Ajax
3
34
ศ 08 พ.ย. 2019 4:03 pm โดย tsukasaz
พรีฯของจากจีนมาขาย สั่งเองไม่ยาก ไม่เก่งภาษาจีนก็ทำได้!
โดย promotion ศ 08 พ.ย. 2019 3:06 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
22
ศ 08 พ.ย. 2019 5:13 pm โดย aloha11x
ค่าเฉลี่ยถ่วงน้ำหนัก (weighted arithmetic mean)
โดย numtan5839 ศ 08 พ.ย. 2019 3:01 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
19
ศ 08 พ.ย. 2019 3:01 pm โดย numtan5839
การใช้ data-thumbnail ใน List box ทำภาพตัวอย่างประกอบตัวเลือกในลิสบ๊อค
โดย bankjittapol ศ 08 พ.ย. 2019 2:25 pm บอร์ด Booststap Knowledge
0
24
ศ 08 พ.ย. 2019 2:25 pm โดย bankjittapol