PHP条件组合数组
我在当前月份的一个天数数组中循环,以生成另一个当天或之后的天数数组。下个月我也在做同样的事情(总是包括当前日期之后的所有日子) 复杂性在于下一个月与当前月份处于不同的年份。最终数组的格式如下所示:PHP条件组合数组,php,arrays,Php,Arrays,我在当前月份的一个天数数组中循环,以生成另一个当天或之后的天数数组。下个月我也在做同样的事情(总是包括当前日期之后的所有日子) 复杂性在于下一个月与当前月份处于不同的年份。最终数组的格式如下所示: array("year" => array("month" => array(days))); $allDays = array("2013" => array( "11" => array(28,29,30), "12" => array(1,2,3,4,5,6,7,
array("year" => array("month" => array(days)));
$allDays = array("2013" => array( "11" => array(28,29,30), "12" => array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)));
$allDays = array("2013" => array("12" => array(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)), "2014" => array("1" => array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31) )) ;
当两个月都在同一年时,可能是这样的:
array("year" => array("month" => array(days)));
$allDays = array("2013" => array( "11" => array(28,29,30), "12" => array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)));
$allDays = array("2013" => array("12" => array(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)), "2014" => array("1" => array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31) )) ;
当两个月在不同的年份(即12月和1月)时,可能如下所示:
array("year" => array("month" => array(days)));
$allDays = array("2013" => array( "11" => array(28,29,30), "12" => array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)));
$allDays = array("2013" => array("12" => array(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)), "2014" => array("1" => array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31) )) ;
以下是生成当前月份和下个月日期列表的代码:
// Set the default timezone
date_default_timezone_set('Australia/Sydney');
// Get days for current month
$day = date("Y-m-d");
$i = strtotime($day);
array("year" => array("month" => array(days)));
$linked_days = array(
date('Y', $i) => array(
date('m') => range(date('d', $i), intval(date('t'))),
),
);
// Get days for next month
$day2 = date("Y-m-d", strtotime('first day of next month')) ;
$i2 = strtotime($day2);
array("year" => array("month" => array(days)));
$linked_days2 = array(
date('Y', $i2) => array(
date('m') => range(date('d', $i2), intval(date('t'))),
),
);
如果它们在同一年或不在同一年,我不知道如何使用不同的sytanx将它们组合到1数组中?您可以使用
isset
功能检查数组中是否已经存在该年的条目:
改变这个
$day2 = date("Y-m-d", strtotime('first day of next month')) ;
$i2 = strtotime($day2);
array("year" => array("month" => array(days)));
$linked_days2 = array(
date('Y', $i2) => array(
date('m') => range(date('d', $i2), intval(date('t'))),
),
);
到
例如,
数组中的天数是多少(“年”=>数组(“月”=>数组(天))
?你甚至没有使用那一行。这似乎对日期使用非字符串表示会更容易。像时间戳
这样的顺序,那么它只是一个来回格式化的问题。