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

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
มารู้จักกับ ฟังก์ชั่น built in ที่มีชื่อว่า getattr ของ python ไว้ใช้ ใช้แสดงค่าของ object
โดย jirawoot พฤ 18 ก.ค. 2019 4:45 pm บอร์ด Python Knowledge
0
4
พฤ 18 ก.ค. 2019 4:45 pm โดย jirawoot
VDO - แนะนำ Feature การใช้งาน โปรแกรมคำนวณภาษีมูลต่าเพิ่มหลังรวม VAT
โดย Patipat พฤ 18 ก.ค. 2019 4:21 pm บอร์ด M088 - ปฏิภัทร สารธรรม
2
9
พฤ 18 ก.ค. 2019 4:29 pm โดย Patipat
รู้จักกับ ฟังก์ชัน uksort() - ใช้เรียงตัวอักษรอาเรย์ตามที่เรากำหนด
โดย Patipat พฤ 18 ก.ค. 2019 3:42 pm บอร์ด PHP Knowledge
0
4
พฤ 18 ก.ค. 2019 3:42 pm โดย Patipat
เล่นเกม XO ในหน้าค้นหาของ google
โดย jamepiyawat พฤ 18 ก.ค. 2019 3:37 pm บอร์ด Share Knowledge
0
4
พฤ 18 ก.ค. 2019 3:37 pm โดย jamepiyawat
สอบถาม หน่อยครับ ผมจะเขียน python เพื่อเรียกใช้ web service
โดย jirawoot พฤ 18 ก.ค. 2019 3:14 pm บอร์ด Programming - C/C++ & java & Python
0
12
พฤ 18 ก.ค. 2019 3:14 pm โดย jirawoot
งานประจำวันที่ 18 กรกฎาคม 2562
โดย EyePornnipa พฤ 18 ก.ค. 2019 3:11 pm บอร์ด M089 - นางสาวพรนิภา ราชธานี
2
9
พฤ 18 ก.ค. 2019 4:23 pm โดย mindphp
R - In Process ปรับข้อความบางส่วนในหน้า Leeds [2019-07][004]
โดย thatsawan พฤ 18 ก.ค. 2019 2:03 pm บอร์ด MD-CRM - Tester
2
8
พฤ 18 ก.ค. 2019 3:32 pm โดย thatsawan
B - แจ้งปัญหา ship to จากแอดมินเข้าระบบไปแก้ไข order [2019-07][005]
โดย tsukasaz พฤ 18 ก.ค. 2019 11:03 am บอร์ด Diageo - Web Ordering - Tester
1
3
พฤ 18 ก.ค. 2019 3:15 pm โดย tsukasaz
B - ลูกค้าสั่งของมาตรงรอบสั่งและเกินจำนวนขั้นต่ำ [2019-07][004]
โดย tsukasaz พฤ 18 ก.ค. 2019 11:01 am บอร์ด Diageo - Web Ordering - Tester
1
2
พฤ 18 ก.ค. 2019 3:15 pm โดย tsukasaz
สอบถามครับ-เรียกฐานข้อมูลมาแสดง เป็นภาษาไทยไม่ได้อะครับ ขึ้น error Ascii
โดย chatee supasand จ 15 ก.ค. 2019 4:17 pm บอร์ด Programming - C/C++ & java & Python
4
59
พฤ 18 ก.ค. 2019 2:36 pm โดย chatee supasand
งานประจำวันที่ 18 กรกฎาคม 2562
โดย Patipat พฤ 18 ก.ค. 2019 10:26 am บอร์ด M088 - ปฏิภัทร สารธรรม
1
11
พฤ 18 ก.ค. 2019 2:42 pm โดย tatiya
งานประจำวันที่ 18 กรกฏาคม 2562
โดย jamepiyawat พฤ 18 ก.ค. 2019 10:16 am บอร์ด M084 - นายปิยวัช เชาว์วิมล
1
9
พฤ 18 ก.ค. 2019 10:58 am โดย tsukasaz
งานประจำวันที่ 18 กรกฏาคม 2562
โดย chatee supasand พฤ 18 ก.ค. 2019 10:02 am บอร์ด MT33 - นายชาตรี สุภาแสน
1
9
พฤ 18 ก.ค. 2019 10:11 am โดย thatsawan
งานประจำวันที่ 18 กรกฎาคม 2562
โดย jirawoot พฤ 18 ก.ค. 2019 9:56 am บอร์ด M090 - นายจิระวุฒิ อัครลิขิตกุล
1
8
พฤ 18 ก.ค. 2019 3:20 pm โดย jirawoot
มี Extension ตัวไหน ดึงข้อมูลจากเว็บอื่นมาแสดงได้ครับ
โดย toonytoony2004 อ 16 ก.ค. 2019 12:55 pm บอร์ด Joomla Development
0
63
อ 16 ก.ค. 2019 12:55 pm โดย toonytoony2004
สรุป openERP
โดย jirawoot จ 15 ก.ค. 2019 8:01 pm บอร์ด M090 - นายจิระวุฒิ อัครลิขิตกุล
0
5
จ 15 ก.ค. 2019 8:01 pm โดย jirawoot
Youtube สามารถฟังเสียงแล้วถอดเป็นข้อความได้
โดย jamepiyawat จ 15 ก.ค. 2019 7:11 pm บอร์ด Share Knowledge
0
52
จ 15 ก.ค. 2019 7:11 pm โดย jamepiyawat
วิธีทำให้ Title joomla Module เปลี่ยนภาษาได้
โดย jamepiyawat จ 15 ก.ค. 2019 6:07 pm บอร์ด Joomla user Guide Knowledge
0
33
จ 15 ก.ค. 2019 6:07 pm โดย jamepiyawat
วิธีแก้ error ของการติดตั้ง psycopg2 หรือ psycopg2_binary
โดย jirawoot จ 15 ก.ค. 2019 5:48 pm บอร์ด Python Knowledge
0
26
จ 15 ก.ค. 2019 5:48 pm โดย jirawoot
การเปิดไฟล์ PDF อีกแท็บนึง ด้วย target ใน html
โดย chatee supasand จ 15 ก.ค. 2019 5:42 pm บอร์ด Programming - C/C++ & java & Python
0
38
จ 15 ก.ค. 2019 5:42 pm โดย chatee supasand