สืบเนื่องจากโพสต์นี้ http://www.select2web.com/php/last-monday.html คือโพสต์นั้นผมเสนอวิธีการหาวันจันทร์สุดท้ายของเดือน แล้วน้องคนหนึ่งมาถามว่า หากจะหาวันจันทร์ทุกๆวันในเดือน ว่าเป็นวันที่อะไรบ้างล่ะจะทำอย่างไร
วิธีคิดก็ง่ายๆ เอาทุกวันในเดือนนั้นๆไปตรวจสอบดูว่าเป็นวันจันทร์หรือเปล่า ถ้าเป็นวันจันทร์ ก็เก็บเอาไว้ ถ้าไม่ใช่ก็ข้าม ก็จะได้วันจันทร์ทั้งหมดออกมา ทีนี้จะเอาทุกๆวันในเดือนนั้นมาตรวจสอบมันก็ต้องลูปไปทีละวันสะดวกสุด โดยเริ่มจากวันแรกของเดือน วันแรกของเดือนมันคือวันที่ 1 เสมอแหละ จากนั้นจึงหาวันสุดท้ายของเดือน เราก็จะรู้ละว่าจะต้องลุปเป็นจำนวนเท่าไร และได้วันด้วย ในลูปก็แค่เอาไปเช็กว่าเป็นวันจันทร์หรือเปล่า เท่านั้นเอง
โค้ดหาวันจันทร์ทั้งหมดในเดือนปัจจุบัน
// ต้นเดือนจะเป็นวันที่ 1 เสมอ $first = 1; // หาวันสุดท้ายของเดือน $last = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); // สร้างตัวแปรไว้เก็บวันจันทร์ $target_day = array(); for ($i = $first; $i <= $last; $i++) { //เช็กว่าเป็นวันจันทร์หรือเปล่า ถ้าใช่เก็บไว้ในตัวแปร $cur = strtotime(date("m") . "/" . $i . "/" . date("Y")); if (date("l", $cur) == "Monday") { $target_day[] = $i; } } // แสดงวันที่ๆเป็นวันจันทร์ ทั้งหมดออกมา var_dump($target_day); |
ฟังก์ชั่นที่จะต้องเรียนรู้เพื่อทำความเข้าใจโค้ด
PHP cal_days_in_month() Function
PHP date() Function
PHP strtotime() Function
โค้ดตัวอย่างหาวันพุธทั้งหมดในเดือนปัจจุบัน
// ต้นเดือนจะเป็นวันที่ 1 เสมอ $first = 1; // หาวันสุดท้ายของเดือน $last = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); // สร้างตัวแปรไว้เก็บวันพุธ $target_day = array(); for ($i = $first; $i <= $last; $i++) { //เช็กว่าเป็นวันพุธหรือเปล่า ถ้าใช่เก็บไว้ในตัวแปร $cur = strtotime(date("m") . "/" . $i . "/" . date("Y")); if (date("l", $cur) == "Wednesday") { $target_day[] = $i; } } // แสดงวันที่ๆเป็นวันพุธ ทั้งหมดออกมา var_dump($target_day); |
โค้ดตัวอย่างหาวันศุกร์ทั้งหมดในเดือน ตุลาคม ปีปัจจุบัน
// ต้นเดือนจะเป็นวันที่ 1 เสมอ $first = 1; // หาวันสุดท้ายของเดือน $last = cal_days_in_month(CAL_GREGORIAN, 10, date("Y")); // สร้างตัวแปรไว้เก็บวันศุกร์ $target_day = array(); for ($i = $first; $i <= $last; $i++) { //เช็กว่าเป็นวันศุกร์หรือเปล่า ถ้าใช่เก็บไว้ในตัวแปร $cur = strtotime(10 . "/" . $i . "/" . date("Y")); if (date("l", $cur) == "Friday") { $target_day[] = $i; } } // แสดงวันที่ๆเป็นวันศุกร์ ทั้งหมดออกมา var_dump($target_day); |
Leave a Reply