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

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
B - เช็คตัววันที่จัดส่ง เหมือนยังผิดอยู่
โดย Parichat พฤ 25 เม.ย. 2019 9:23 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 9:23 pm โดย Parichat
R - ตรงหน้าตะกร้าสินค้าจาก ชำระเงิน ให้เปลี่ยนเป็น ตรวจสอบแล้ว
โดย Parichat พฤ 25 เม.ย. 2019 9:10 pm บอร์ด Diageo - Web Ordering - Tester
0
3
พฤ 25 เม.ย. 2019 9:10 pm โดย Parichat
B - ในหน้าดูรายละเอียดสินค้าต้องล้อตามภาษาที่เปลี่ยน
โดย Parichat พฤ 25 เม.ย. 2019 9:09 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 9:09 pm โดย Parichat
R - ในหน้า Order ตรงปริ้นให้แสดงรูปแบบเดียวกับรูปแบบอีเมลสั่งซื้อที่ส่งให้ลูกค้า
โดย Parichat พฤ 25 เม.ย. 2019 9:07 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 9:07 pm โดย Parichat
R - ในหน้า order ฝั่งแอดมิน ลบได้แค่ออเดอร์ที่มีสถานะ เพนดิ้งและคอนเฟิม แต่สถานะคอมพรีสไม่สามารถลบได้
โดย Parichat พฤ 25 เม.ย. 2019 9:04 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 9:04 pm โดย Parichat
R - เพิ่มส่วนของ sale ที่สามารถกำหนดได้ว่า Sale คนไหนรับผิดชอบลูกค้าเจ้าไหนบ้าง
โดย Parichat พฤ 25 เม.ย. 2019 9:03 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 9:03 pm โดย Parichat
R - หน้าคืนสินค้าตรงหน่วย Quantity ให้เปิดช่องให้คีย์ได้ทั้งขวดและลัง
โดย Parichat พฤ 25 เม.ย. 2019 9:01 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 9:01 pm โดย Parichat
R - ในหน้าสร้างรายการคืนสินค้าใน listbox ให้แสดงเลข order number ต่อท้ายเลข Invoice Number
โดย Parichat พฤ 25 เม.ย. 2019 8:58 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 8:58 pm โดย Parichat
B - แก้ไข Password ไม่ได้ฝั่งเว็บ
โดย Parichat พฤ 25 เม.ย. 2019 8:32 pm บอร์ด Diageo - Web Ordering - Tester
0
4
พฤ 25 เม.ย. 2019 8:32 pm โดย Parichat
R - ในหน้าประวัติการสั่งซื้อให้เพิ่มอินวอยนัมเบอร์มาแสดงต่อจาก order number
โดย Parichat พฤ 25 เม.ย. 2019 7:44 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 7:44 pm โดย Parichat
การปิดการใช้งานลิงค์โดยใช้ CSS
โดย abdkode พฤ 25 เม.ย. 2019 6:22 pm บอร์ด CSS Knowledge
0
4
พฤ 25 เม.ย. 2019 6:22 pm โดย abdkode
การคำนวณต้นทุนขาย
โดย สริญญา สมสา พฤ 25 เม.ย. 2019 5:51 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
7
พฤ 25 เม.ย. 2019 5:51 pm โดย สริญญา สมสา
R - ในการเปลี่ยนสถานะให้ดีฟอลให้แจ้งเตือนทุกครั้งที่มีการเปลี่ยนสถานะของการสั่งซื้อ
โดย Parichat พฤ 25 เม.ย. 2019 5:07 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 5:07 pm โดย Parichat
R - แก้คำตัวคำแจ้งเตือนในหน้ารายละเอียดของสินค้า
โดย Parichat พฤ 25 เม.ย. 2019 5:05 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 5:05 pm โดย Parichat
R - หน้ารายละเอียดของสินค้าตรงคำว่า Comment
โดย Parichat พฤ 25 เม.ย. 2019 5:03 pm บอร์ด Diageo - Web Ordering - Tester
0
2
พฤ 25 เม.ย. 2019 5:03 pm โดย Parichat
B - ในกรณีที่ลูกค้าเค้ายังไม่ได้สั่งซื้อแล้วกดไปดูรายการในตะกร้าแล้วไม่ต้องให้แจ้งเตือน
โดย Parichat พฤ 25 เม.ย. 2019 4:59 pm บอร์ด Diageo - Web Ordering - Tester
0
2
พฤ 25 เม.ย. 2019 4:59 pm โดย Parichat
R - ตัวค้นหาปรับให้เด่นขึ้น
โดย Parichat พฤ 25 เม.ย. 2019 4:58 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 4:58 pm โดย Parichat
B - แก้ไขข้อมูลในเมนู ติดต่อเราให้ใส่ชื่อบริษัท เบอร์โทร อีเมล ที่อยู่ ตามที่ให้มาตอนจดโดเมน
โดย Parichat พฤ 25 เม.ย. 2019 4:55 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 4:55 pm โดย Parichat
R - ตัว Export ที่เข้า SAP ให้แสดงจำนวนเป็นแบบขวด
โดย Parichat พฤ 25 เม.ย. 2019 4:52 pm บอร์ด Diageo - Web Ordering - Tester
0
2
พฤ 25 เม.ย. 2019 4:52 pm โดย Parichat
R - เอาการตั้งค่าต่างๆที่เค้าไม่ใช้ออกและให้แสดงที่ที่ลูกค้าใช้งานในฝั่งแอดมิน
โดย Parichat พฤ 25 เม.ย. 2019 4:49 pm บอร์ด Diageo - Web Ordering - Tester
0
1
พฤ 25 เม.ย. 2019 4:49 pm โดย Parichat