将子阵列推送到阵列中的特定键

时间:2015-02-16 17:46:08

标签: php arrays wordpress foreach key

我确信这很容易做到,我只是这个级别的PHP编程的新手。另外,请原谅我的术语,我不知道事情的正式名称,所以如果有些事情不清楚,请告诉我。

好吧,所以我正在用PHP构建一个日历,而且我已经完成了所有工作,除了我每天只能显示一个事件。我意识到这是因为我将事件数据存储为数组中特定键的子键。

基本上我在日历中创建每天作为数组中的键。例如:

$events["1"] = "first day of the month";
$events["2"] = "second day of the month";
$events["3"] = "third day of the month";
...

然后在每个人的内心,我正在做这样的事情:

$events["1"]["title"] = "title for the event on the first day of the month";
$events["1"]["time"]  = "time for the event on the first day of the month";
$events["2"]["title"] = "title for the event on the second day of the month";
$events["2"]["time"]  = "time for the event on the second day of the month";
...

此设置意味着我每天只能存储一个事件。如果我在哪里尝试设置多个事件,则每个后续事件都将覆盖前一个事件的值。

所以我想要做的是将每个事件设置为该键中的数组。例如:

$events["1"][0] = array("title" => "first title for the event on the first day of the month", "time" => "first time for the event on the first day of the month");
$events["1"][1] = array("title" => "second title for the event on the first day of the month", "time" => "second time for the event on the first day of the month");

我可以使用array_push()添加每个事件,但我不知道如何为带有键的数组执行此操作。

最后,一旦我将所有内容妥善存储,我需要以某种方式输出每个事件,那么我将如何循环每天的每个子数组呢?现在我正在做:

foreach ($events as $event) {
    if ($event["title"] != "") {
        echo "<strong>" . $event["title"] . "</strong>";
    }
}

我想我需要在foreachforeach,但我不太确定如何设置它。

感谢您的帮助。再一次,我确信这很容易理解,我只是一个程序员。

PS:这是为WordPress网站构建的,如果这有所不同。我知道有http://wordpress.stackexchange.com,但我认为因为这是比WordPress特定的更常见的编程问题,所以这是更合适的网站。

1 个答案:

答案 0 :(得分:1)

如果您打算使用文本键,最好做以下事情:

$events["1"]["title"] = "title for the event on the first day of the month";
$events["1"]["time"]  = "time for the event on the first day of the month";
$events["1"]["events"] = array();

以便$ events [n] [&#39; events&#39;]是当天所有活动的数组。

你不需要array_push。您可以通过以下方式添加活动:

$events["1"]["events"][] = new event

然后您将通过以下方式显示事件:

foreach ($events as $event) {
    if ($event["title"] != "") {
        echo "<strong>" . $event["title"] . "</strong>";
    }
    foreach ($event['events'] as $evt) {
        // display the event as you want
    }
}