PHP如何在月数组中排除周末并向假日添加属性
我将给定月份的所有天数作为数组。现在我想: 1不包括周末 2假日或假期期间,这些天应该有一个属性,例如isHoliday,因此数组例如可以如下所示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++) {
[{
"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(如果找到)。