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”;
}
回声“;
谢谢,对这本书感到抱歉。