关于填充一个给定年份假期的数组(不是关于如何计算它们),之后可以轻松访问它们。我的方法是使用假期的时间戳作为键。
$year = 2015;
$holidays = array(
strtotime($year . '-01-01') => array(
'holiday' => 'New Year',
'comment' => 'Happy New Year!'
),
strtotime($year . '-04-05') => array(
'holiday' => 'Easter',
'comment' => 'Happy Easter!'
),
strtotime($year . '-12-25') => array(
'holiday' => 'Christmas',
'comment' => 'Merry Christmas!'
)
.
.
.
);
这种情况很好,直到有一天同一天有多个假期,例如2015年12月6日(圣尼古拉斯'日,第一次出现)。在这种情况下,已定义的键背后的值将被覆盖。所以需要另一个数组级别。
$year = 2015;
$holidays = array();
$holidays[strtotime($year . '-01-01')][] => array(
'holiday' => 'New Year',
'comment' => 'Happy New Year!'
);
$holidays[strtotime($year . '-04-05')][] => array(
'holiday' => 'Easter',
'comment' => 'Happy Easter!'
);
$holidays[strtotime($year . '-12-25')][] => array(
'holiday' => 'Christmas',
'comment' => 'Merry Christmas!'
);
$holidays[strtotime($year . '-12-06')][] => array(
'holiday' => 'St Nicholas\' Day',
'comment' => 'Make sure to turn out your boots!'
);
$holidays[strtotime($year . '-12-06')][] => array(
'holiday' => 'First Advent',
'comment' => 'Remember to light the first candle on your Advent wreath!'
);
.
.
.
);
这个阵列填充是否可以在"一行" (注意;
)和我的第一个例子一样?你有其他(聪明的)想法而不是我的方法吗?
答案 0 :(得分:1)
我会使用常规的0索引数组,然后在数组中为该假期创建另一个字段。
$year = 2015;
$holidays = array();
$holidays[] => array(
'holiday' => 'New Year',
'comment' => 'Happy New Year!',
'time' => strtotime($year . '-01-01')
);
$holidays[] => array(
'holiday' => 'Easter',
'comment' => 'Happy Easter!',
'time' => strtotime($year . '-04-05'),
);
...
然后,如果我需要对它进行排序,我会使用php数组排序函数。
至于在一个声明中做到这一切,你可以这样做:
$holidays = array(
strtotime($year . '-04-05') => array(
array(
'holiday' => 'Easter',
'comment' => 'Happy Easter!',
),
array(
'holiday' => 'Christmas',
'comment' => 'Merry Christmas!'
),
),
);
只需添加更多数组......