如何用假期填充数组?

时间:2015-11-06 15:19:36

标签: php arrays fill

关于填充一个给定年份假期的数组(不是关于如何计算它们),之后可以轻松访问它们。我的方法是使用假期的时间戳作为键。

$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!'
);
.
.
.
);

这个阵列填充是否可以在"一行" (注意;)和我的第一个例子一样?你有其他(聪明的)想法而不是我的方法吗?

1 个答案:

答案 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!'
        ),
    ),
);

只需添加更多数组......