PHP如何在月数组中排除周末并向假日添加属性

PHP如何在月数组中排除周末并向假日添加属性,php,arrays,Php,Arrays,我将给定月份的所有天数作为数组。现在我想: 1不包括周末 2假日或假期期间,这些天应该有一个属性,例如isHoliday,因此数组例如可以如下所示 [{ "day" : "2018-09-03-Monday", "isHoliday" : false //or true if its a holiday }] 可能吗 到目前为止,我的代码是: $list=array(); $month = 9; $year = 2018; for($d=1; $d<=31; $d++) {

我将给定月份的所有天数作为数组。现在我想:

1不包括周末

2假日或假期期间,这些天应该有一个属性,例如isHoliday,因此数组例如可以如下所示

[{
  "day" : "2018-09-03-Monday",
  "isHoliday" : false //or true if its a holiday 
}]
可能吗

到目前为止,我的代码是:

$list=array();
$month = 9;
$year = 2018;

for($d=1; $d<=31; $d++)
{
   $time=mktime(12, 0, 0, $month, $d, $year);          
    if (date('m', $time)==$month)       
       $list[]=date('Y-m-d-D', $time);
}

print_r($list);

对于周末检查,您可以执行与月度检查类似的操作:

if(date('d', $time) !== 'Sat' && date('d', $time) !== 'Sun')
对于假日检查,请在数组中搜索当天的记录,并检查标志:

$date = date('Y-m-d-l', $time);
$isHoliday = false;
foreach($holidays as $entry)
{
    if($entry['day'] === $date)
    {
        $isHoliday = $entry['isHoliday'];
        break;
    }
}

我建议您使用已经实施的解决方案:

这是一个简单且非常有用的库

例如:

require 'vendor/autoload.php';

// Use the factory to create a new holiday provider instance
$holidays = Yasumi\Yasumi::create('USA', 2018);

// Get the number of defined holidays
echo $holidays->count() . PHP_EOL;

// Get a list all of the holiday dates
foreach ($holidays->getHolidayDates() as $date) {
    echo $date . PHP_EOL;
}

// Check if date is holiday
$holidays->isHoliday(new Date())

谢谢,但我不想用电话library@ST80当然,这是你的选择。但是你可以看看这个图书馆的资料,得到一个他们如何定义假期的例子。周末检查是完美的。假日支票是我无法去工作的支票-如果假日是一系列日期,我应该在哪里放置支票-在for循环中?是的,在for循环中,然后你可以在条件中使用$isHoliday。对不起,我在那里的代码有一个错误。。。date调用应该引用您在循环中创建的$time。如果假日列表只是一个日期数组,则相应地设置当前时间的格式,并搜索该数组,类似于上面设置的$isHoliday=true(如果找到)。