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

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
G - Username & Password ในการเข้าระบบของลูกค้า
โดย Parichat พ 24 เม.ย. 2019 8:15 pm บอร์ด Diageo - Web Ordering (Main)
0
5
พ 24 เม.ย. 2019 8:15 pm โดย Parichat
การใช้งานโปรเเกรม Open ERP ในส่วนของ Fixed price (deposit) เงินที่จ่ายล่วงหน้า เป็นต้น
โดย สริญญา สมสา พ 24 เม.ย. 2019 6:33 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
17
พ 24 เม.ย. 2019 6:33 pm โดย สริญญา สมสา
B - สั่งสินค้ามากกว่า MOQ 100 ลัง แต่มีการแจ้งว่าไม่ถึง [2019-04][021]
โดย Parichat พ 24 เม.ย. 2019 6:22 pm บอร์ด Diageo - Web Ordering - Tester
0
2
พ 24 เม.ย. 2019 6:22 pm โดย Parichat
B - ข้อความแจ้งเตือนภาษาไทยเขียนไม่ถูกต้อง [2019-04][024]
โดย Parichat พ 24 เม.ย. 2019 6:13 pm บอร์ด Diageo - Web Ordering - Tester
0
3
พ 24 เม.ย. 2019 6:13 pm โดย Parichat
B - ข้อความแจ้งเตือนการสั่งสินค้านอกรอบเขียนไม่ถูกต้อง [2019-04][022]
โดย Parichat พ 24 เม.ย. 2019 6:10 pm บอร์ด Diageo - Web Ordering - Tester
0
4
พ 24 เม.ย. 2019 6:10 pm โดย Parichat
B - ข้อความแจ้งเตือนสั่งน้อยกว่า MOQ 100 ลัง แต่เขียนไม่ถูกต้อง [2019-04][023]
โดย Parichat พ 24 เม.ย. 2019 6:06 pm บอร์ด Diageo - Web Ordering - Tester
2
8
พ 24 เม.ย. 2019 8:34 pm โดย Parichat
การใช้งานโปรเเกรม Open ERP ในส่วน Some Order Lines การทำใบเเจ้งหนี้เเบบรายการ
โดย สริญญา สมสา พ 24 เม.ย. 2019 5:38 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
9
พ 24 เม.ย. 2019 5:38 pm โดย สริญญา สมสา
วิธีลัดแสกน QR Code ด้วย Google Assistant
โดย napharat079 พ 24 เม.ย. 2019 4:13 pm บอร์ด Share Knowledge
0
14
พ 24 เม.ย. 2019 4:13 pm โดย napharat079
กำหนดค่าไม่ให้ซ้ำยังไงค่ะ
โดย Kanyarat Kanthawong พ 24 เม.ย. 2019 3:27 pm บอร์ด SQL - Database
1
22
พ 24 เม.ย. 2019 9:34 pm โดย mindphp
วิธีตั้งค่า Gmail Offline เช็คเมล์ได้ไม่ต้องง้ออินเตอร์เน็ต
โดย napharat079 พ 24 เม.ย. 2019 3:00 pm บอร์ด Share Knowledge
0
13
พ 24 เม.ย. 2019 3:00 pm โดย napharat079
วีธีตั้งค่า Gmail ให้ตอบกลับอัตโนมัติ
โดย napharat079 พ 24 เม.ย. 2019 1:52 pm บอร์ด Share Knowledge
0
15
พ 24 เม.ย. 2019 1:52 pm โดย napharat079
B - CART and View Order คำนวณผิด [2019-04][020]
โดย Parichat พ 24 เม.ย. 2019 10:56 am บอร์ด Diageo - Web Ordering - Tester
3
6
พ 24 เม.ย. 2019 8:28 pm โดย Parichat
งานประจำวันที่ 24 เมษายน 2562
โดย poumtip พ 24 เม.ย. 2019 10:12 am บอร์ด M080 - สุทธาทิพย์ อู่นาค
1
11
พ 24 เม.ย. 2019 7:58 pm โดย poumtip
งานประจำวันที่ 24 เมษายน 2562
โดย napharat079 พ 24 เม.ย. 2019 10:03 am บอร์ด M079 - นภารัตน์ ฐิติกรโกวิท
1
2
พ 24 เม.ย. 2019 7:00 pm โดย napharat079
เมธอด resize() ใน jQuery ใช้เมื่อหน้าต่างเบราว์เซอร์เปลี่ยนขนาด
โดย abdkode อ 23 เม.ย. 2019 7:00 pm บอร์ด Jquery & Ajax Knowledge
0
13
อ 23 เม.ย. 2019 7:00 pm โดย abdkode
วิธีตั้ง Vote ในแอปพลิเคชั่น Line
โดย napharat079 อ 23 เม.ย. 2019 5:10 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
15
อ 23 เม.ย. 2019 5:10 pm โดย napharat079
อยากทราบวิธีการเปิด การลบแบบไม่ถารวร ใน phpbb ครับ
โดย Ittichai_chupol อ 23 เม.ย. 2019 4:44 pm บอร์ด Programming - PHP
1
16
อ 23 เม.ย. 2019 6:08 pm โดย mindphp
ลบภาพพื้นหลังด่วนด้วยเทคโนโลยี AI
โดย napharat079 อ 23 เม.ย. 2019 3:30 pm บอร์ด Graphic design
0
27
อ 23 เม.ย. 2019 3:30 pm โดย napharat079
การใช้งานโปรเเกรม Open ERP ในส่วน Persentage นำสินค้ามาคิดเปอร์เซ็นต์
โดย สริญญา สมสา อ 23 เม.ย. 2019 3:01 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
29
อ 23 เม.ย. 2019 3:01 pm โดย สริญญา สมสา
R - รูปแบบเทมเพลตอีเมลทั้ง 3 รูปแบบ
โดย Parichat อ 23 เม.ย. 2019 1:49 pm บอร์ด Diageo - Web Ordering - Tester
4
16
พ 24 เม.ย. 2019 11:00 am โดย Parichat