Php 多维数组推/添加?

Php 多维数组推/添加?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我想创建如下数组 [Schedule_Date_Group] => Array ( [Schedule_Date] => Array ( [Friday, September 16, 2011] => Array (

我想创建如下数组

[Schedule_Date_Group] => Array
            (
                [Schedule_Date] => Array
                    (
                        [Friday, September 16, 2011] => Array
                            (
                                [Schedule_Item] => Array
                                    (
                                        [nid] => 763
                                        [time] => 1:15 PM
                                        [title] => What a Publisher Does: 5 Reasons Why You Need a...
                                        [event_type] => events
                                        [length] => 
                                        [movie_type] => 
                                        [details] => 
                                    )

                                [Schedule_Item] => Array
                                    (
                                        [nid] => 763
                                        [time] => 1:15 PM
                                        [title] => What a Publisher Does: 5 Reasons Why You Need a...
                                        [event_type] => events
                                        [length] => 
                                        [movie_type] => 
                                        [details] => 
                                    )

                            )

                    )

            )
但我有几个问题,首先,数组似乎是用前面的#作为第一个值创建的。范例

[7] => Array
    (
        [Schedule_Date_Group] => Array
            (
而且我的数组没有将其置于日期数组下(
[2011年9月16日,星期五]=>数组
),它们只是作为普通数组添加到末尾。范例

[7] => Array
    (
        [Schedule_Date_Group] => Array
            (
                [Schedule_Date] => Array
                    (
                        [Friday, September 16, 2011] => Array
                            (
                                [Schedule_Item] => Array
                                    (
                                        [nid] => 763
                                        [time] => 1:15 PM
                                        [title] => What a Publisher Does: 5 Reasons Why You Need a...
                                        [event_type] => events
                                        [length] => 
                                        [movie_type] => 
                                        [details] => 
                                    )

                            )

                    )

            )

    )

[8] => Array
    (
        [Schedule_Item] => Array
            (
                [nid] => 764
                [time] => 1:30 PM
                [title] => Navigating the Road to Licensing Music For Your...
                [event_type] => events
                [length] => 
                [movie_type] => 
                [details] => 
            )

    )
如何解决这两个问题。它们同样位于#的计划_日期_组数组之前,子数组被添加到末尾,而不是嵌套在日期组数组下

主要计划项目和日期组部分的PHP

$xml[] = array("Schedule_Date_Group" => array("Schedule_Date" => array($pretty_date => array("Schedule_Item" => array("nid" => $do['nid'], "time" => $pretty_time, "title" => $title, "event_type" => $do['field_event_type_value'], "length" => $do['field_length_value'], "movie_type" => $do['field_movie_type_value'], "details" => $schedule_details)))));
用于子菜单项的PHP

$xml[] = array("Schedule_Item" => array("nid" => $do['nid'], "time" => $pretty_time, "title" => $title, "event_type" => $do['field_event_type_value'], "length" => $do['field_length_value'], "movie_type" => $do['field_movie_type_value'], "details" => $schedule_details));
它是循环通过,所以我没有办法只是创建一个巨大的阵列。如果设置了一个新的“计划日期”,它将创建一个新的
[Schedule\u Date\u Group]=>数组
(
[Schedule_Date]=>数组
(
[2011年9月16日,星期五]=>阵列
(
所有的子内容都应该放在新内容下。 所以我会以

DATE
 - Schedule_Item 1
 - Schedule_Item 2
 - Schedule_Item 3
 - Schedule_Item 4
New Date
 - Schedule Item 5
 - Schedule Item 6
等等


有什么帮助吗?

首先,使用一个巨大的数组手动生成这样的XML不是一种方法。使用类似或的东西,然后您可以在获取数据时动态生成文档。但是,如果您真的想这样做,或者被迫这样做,请继续阅读


第二,您试图做的事情无法完成。这是因为您希望对多个条目使用相同的数组键,但这不会起作用-您只会覆盖以前的条目

第三,出现数字键是因为您使用的是
$xml[]
(array_push()的行为方式与此相同),它将始终添加一个数字键,因为您没有告诉它您想要的文本键是什么

第四,您的额外项被添加到数组的外部级别,因为这是您告诉PHP要做的。
$xml[]
将始终向
$xml
变量的外部级别添加一个新键,因为您没有告诉PHP您正在处理内部数组

您的结构需要更像这样:

$scheduleDateGroup = array (
  'Friday, September 16, 2011' => array (
    // These are your schedule items...
    0 => array( ... ),
    1 => array( ... ),
    2 => array( ... ),
    ...
  ),
  'Saturday, September 17, 2011' => array (
    0 => array( ... ),
    1 => array( ... ),
    2 => array( ... ),
    ...
  ),
  ...
);
$scheduleDateGroup[$date][] = array( ... );
echo "<Schedule_Date_Group>\n";
foreach ($scheduleDateGroup as $day => $schedules) {
  echo "  <Schedule_Date date=\"$day\">\n";
  foreach ($schedules as $item) {
    echo "    <Schedule_Item";
    foreach ($item as $attr => $value) echo " $attr=\"$value\"";
    echo " />\n";
  }
  echo "  </Schedule_Date>\n";
}
echo "</Schedule_Date_Group>";
…您可以将新项目推送到特定日期,如下所示:

$scheduleDateGroup = array (
  'Friday, September 16, 2011' => array (
    // These are your schedule items...
    0 => array( ... ),
    1 => array( ... ),
    2 => array( ... ),
    ...
  ),
  'Saturday, September 17, 2011' => array (
    0 => array( ... ),
    1 => array( ... ),
    2 => array( ... ),
    ...
  ),
  ...
);
$scheduleDateGroup[$date][] = array( ... );
echo "<Schedule_Date_Group>\n";
foreach ($scheduleDateGroup as $day => $schedules) {
  echo "  <Schedule_Date date=\"$day\">\n";
  foreach ($schedules as $item) {
    echo "    <Schedule_Item";
    foreach ($item as $attr => $value) echo " $attr=\"$value\"";
    echo " />\n";
  }
  echo "  </Schedule_Date>\n";
}
echo "</Schedule_Date_Group>";
然后,您可以循环使用它并将其转换为XML,如下所示:

$scheduleDateGroup = array (
  'Friday, September 16, 2011' => array (
    // These are your schedule items...
    0 => array( ... ),
    1 => array( ... ),
    2 => array( ... ),
    ...
  ),
  'Saturday, September 17, 2011' => array (
    0 => array( ... ),
    1 => array( ... ),
    2 => array( ... ),
    ...
  ),
  ...
);
$scheduleDateGroup[$date][] = array( ... );
echo "<Schedule_Date_Group>\n";
foreach ($scheduleDateGroup as $day => $schedules) {
  echo "  <Schedule_Date date=\"$day\">\n";
  foreach ($schedules as $item) {
    echo "    <Schedule_Item";
    foreach ($item as $attr => $value) echo " $attr=\"$value\"";
    echo " />\n";
  }
  echo "  </Schedule_Date>\n";
}
echo "</Schedule_Date_Group>";
echo“\n”;
foreach($scheduleDateGroup作为$day=>$schedules){
回音“\n”;
foreach($项目明细表){
回音“\n”;
}
回音“\n”;
}
回声“;

谢谢,对这本书感到抱歉。