PHP。当用户选择此选项时,显示所有12个月的日历
我有一个作业,其中包括一个“选择全年”复选框。当用户选中此框并提交时,将显示12个日历,每个月一个。除6月份外,我一直在工作。除六月外,所有日历都能完美显示。六月的日子不是以日历的形式出现,而是分布在整个页面上。我不明白这是怎么发生的,也不知道如何解决。我希望能得到一些帮助PHP。当用户选择此选项时,显示所有12个月的日历,php,Php,我有一个作业,其中包括一个“选择全年”复选框。当用户选中此框并提交时,将显示12个日历,每个月一个。除6月份外,我一直在工作。除六月外,所有日历都能完美显示。六月的日子不是以日历的形式出现,而是分布在整个页面上。我不明白这是怎么发生的,也不知道如何解决。我希望能得到一些帮助 if($isPostBack){ $whole_year=过滤输入(输入后“whole_year”); $select_year=过滤器输入(输入_POST,'select_year',过滤器验证_FLOAT); $sel
if($isPostBack){
$whole_year=过滤输入(输入后“whole_year”);
$select_year=过滤器输入(输入_POST,'select_year',过滤器验证_FLOAT);
$select\u month=过滤输入(输入后,'select\u month',过滤验证\u FLOAT);
如果(全年){
$months\u to\u show=月数;
}否则{
$months_to_show=1;
}
$start_date=date_create_from_format('Y-m-d',“{$select_year}-{$select_month}-01”);
而($months\u to\u show>0){
$calendar=格式('w');
对于($fillers=0;$fillers<$week_start;$fillers++){
回声“;
}
$day\u of_week=$week\u开始;
对于($day_of_month=1;$day_of_month格式('t');$day_of_month++){
如果($day\u of_week==0){
回声';
}
回声“;
如果($day\u of_week==6){
回声';
$day\u of_week=0;
}否则{
$day_of u week++;
}
}
回声“;
$start_date->修改(“+1个月”);
$months_to_show--;
}
}否则{
}
?>
如果一个月的第一天是星期天,问题就来了。
使用相同的运算符==
,检查两个变量的类型是否相同。
但是,变量$week\u start
首先使用$start\u date->format('w')初始化始终返回字符串的代码>。因此,条件if($day\u of_week==6)
返回false
。然后,当PHP计算$day\u of_week++代码>,它将把变量转换为整数。
您将拥有序列号'6',7,8,9,…
,并且您的表行将永远不会关闭
如果一个月的第一天不是星期天,那么变量将被转换为6之前的整数,事情就会顺利进行:'3',4,5,6,0,1,2,3,…
因此,有两种解决方案:
- 将
$week\u start
转换为开头的整数:$week\u start=intval($start\u date->format('w')代码>
- 使用简单的相等运算符
=
,它不会检查两个变量的类型:如果($day\u of_week==6)
如果一个月的第一天是星期天,你的问题就来了。
使用相同的运算符
==
,检查两个变量的类型是否相同。
但是,变量$week\u start
首先使用$start\u date->format('w')初始化始终返回字符串的代码>。因此,条件if($day\u of_week==6)
返回false
。然后,当PHP计算$day\u of_week++代码>,它将把变量转换为整数。
您将拥有序列号'6',7,8,9,…
,并且您的表行将永远不会关闭
如果一个月的第一天不是星期天,那么变量将被转换为6之前的整数,事情就会顺利进行:'3',4,5,6,0,1,2,3,…
因此,有两种解决方案:
- 将
$week\u start
转换为开头的整数:$week\u start=intval($start\u date->format('w')代码>
- 使用简单的相等运算符
=
,它不会检查两个变量的类型:如果($day\u of_week==6)
非常感谢您的详细解释。我使用了你的第二个建议,效果非常好。非常感谢你的详细解释。我采纳了你的第二个建议,效果很好。