我正在制作日历,并希望从数组中显示元素(公众假期等)。
$holidays = Array (
"20130101" => "New Year's Day",
"20130101" => "School Holiday",
"20130126" => "Australia Day",
...
);
$today = '20130101';
foreach ($holidays as $key => $val) {
if ($today == $key) echo $val; else;
}
但它只显示“学校假期”,这是阵列中的最后一个元素,但我想同时展示“新年”和“学校假期”。
有关如何解决此问题的任何建议?提前谢谢。
答案 0 :(得分:1)
您可以为此格式的每个条目创建一个数组,因为数组键必须是唯一的:
$holidays = Array (
"20130101" => array (
"New Year's Day",
"School Holiday",
),
"20130126" => array("Australia Day"),
...
);
if (isset($holidays[$today]))
echo implode(", ", $holidays[$today]);
此外,您不必使用大循环,直接阵列访问就足够了。
答案 1 :(得分:0)
数组中不能有两个具有相同键的元素。这样:
$holidays = Array (
"20130101" => "New Year's Day",
"20130101" => "School Holiday",
"20130126" => "Australia Day"
);
评估为
[
"20130101" => "School Holiday",
"20130126" => "Australia Day"
]
所以你在循环中只得到一个结果就不足为奇了。
考虑这样的事情:
$holidays = Array (
Array ("date" => "20130101", "name" => "New Year's Day"),
Array ("date" => "20130101", "name" => "School Holiday"),
Array ("date" => "20130126", "name" => "Australia Day")
);
$today = '20130101';
foreach ($holidays as $holiday)
{
if ($holiday["date"] == $today)
{
echo $holiday["name"] . "\n";
}
}
答案 2 :(得分:0)
您无法使用==运算符比较字符串。试试这个!
$holidays = Array (
"20130101" => "New Year's Day",
"20130101" => "School Holiday",
"20130126" => "Australia Day",
...
);
$today = '20130101';
foreach ($holidays as $key => $val) {
if (strcmp($today,$key) == 0) echo $val; else;
}