为此尝试了ArrayList和ArrayData的各种组合,但没有运气。 Google只向我展示了非常简单的转换数组。像this
一样这是我的简化数组:
$locations = [
'Venue' => [
[
'Name' => 'ANZ Events Centre',
]
],
'Hotels' => [
[
'Name' => 'Pullman Hotel',
],
[
'Name' => 'Mercure Hotel',
]
]
]
这就是我想在模板中做的事情:
<% if $Locations %>
<% if $Locations.Venue %>
<% loop $Locations.Venue %>
$Name
<% end_loop %>
<% end_if %>
<% end_if %>
我无法理解ArrayList的作用,因为它为我添加的每条记录添加了一个数字键。但这是我尝试将其转换为模板可以循环的内容的最后一个化身:
$templateArrayList = ArrayList::create();
foreach($locations as $type => $group) {
$groupArray = [];
foreach($group as $location) {
$groupArray[$type][] = ArrayData::create($location);
}
$groupArrayData = ArrayData::create($groupArray);
$templateArrayList->push($groupArrayData);
}
我在这里遇到了什么问题?
答案 0 :(得分:1)
找到了摆弄ArrayList和ArrayData的各种组合的答案,并留待将来搜索。
在我看来,最简单的方法是关联数组(例如Venue / Hotel组键和数据元素中的Name键)是ArrayData。非关联数组(例如两个酒店数组的集合)是ArrayList。
考虑到这一点,这是我的工作代码:
foreach($locations as $type => $group) {
$groupArray[$type] = ArrayList::create();
foreach($group as $location) {
$groupArray[$type]->push(ArrayData::create($location));
}
$groupArrayData = ArrayData::create($groupArray);
}
$data = [
'Locations' => $groupArrayData
];
return $data;