将子数组推送到数组中的特定键

Push sub-array to a specific key in an array

我相信这很容易做到,我只是这个 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>";
    }
}

我想 foreach 中需要一个 foreach,但我不太确定如何设置它。

感谢您的帮助。同样,我确信这很容易理解,我只是不太会编程。

PS:这一切都是为 WordPress 网站构建的,如果有区别的话。我知道有 http://wordpress.stackexchange.com,但我认为因为这是比 WordPress 特定的任何问题更一般的编程问题,所以它是更合适的站点。

如果你打算使用文本键,你最好这样做:

$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]['events'] 是当天所有事件的数组。

您不需要 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
    }
}