สืบเนื่องจากโพสต์นี้ 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);