在这个http://codeigniter.com/user_guide/libraries/parser.html教程中,我们有这个多维数组
$data = array(
'blog_title' => 'My Blog Title',
'blog_heading' => 'My Blog Heading',
'blog_entries' => array(
array('title' => 'Title 1', 'body' => 'Body 1'),
array('title' => 'Title 2', 'body' => 'Body 2'),
array('title' => 'Title 3', 'body' => 'Body 3'),
array('title' => 'Title 4', 'body' => 'Body 4'),
array('title' => 'Title 5', 'body' => 'Body 5')
)
);
我们就像这样轻松打印他
{blog_entries}
<h5>{title}</h5>
<p>{body}</p>
{/blog_entries}
但是如何输出这样的数组http://i.imgur.com/L6i1B.png:?
$data = array(
array(
'user' => array('id' => "1", 'name' => "Test1"
),'title' => 'Title 1', 'body' => 'Body 1'),
array(
'user' => array('id' => "2", 'name' => "Test2"
),'title' => 'Title 2', 'body' => 'Body 2'),
array(
'user' => array('id' => "3", 'name' => "Test3"
),'title' => 'Title 3', 'body' => 'Body 3')
);
如果我们尝试做这样的事情
{blog_entries}
{user}
{id}
{/user}
{title}
{body}
<br />
{/blog_entries}
我们会有错误:
Message: Invalid argument supplied for foreach()
啊,在这里找到了类似的问题Extended Template Parser: CodeIgniter... Issue with Nested Arrays
答案 0 :(得分:1)
此功能包含在内置模板类中。 (我不知道你第一次发布这个问题时是否存在,但它现在在那里,我自己使用它。)诀窍是创建适当的数组结构传递给解析器。我刚才在实时页面中测试了这个例子,在CI 2.1.3中100%工作。
作为一个具体的例子,请考虑这个代码,它显示(格式最小化)酒店提供的一系列房间,并显示每个房间每天旅行的费率。 (在本例中为2天。)
{available_rooms}
<p>{room_type} {total_rate}</p>
{room_rates}
<p>${room_rate} {room_date}</p>
{/room_rates}
<hr>
{/available_rooms}
out out类似于:
1 King Bed 119.98
59.99 2013-03-23
59.99 2013-03-24
1 King Bed 119.98
59.99 2013-03-23
59.99 2013-03-24
2 Double Beds 139.98
69.99 2013-03-23
69.99 2013-03-24
2 Double Beds 139.98
69.99 2013-03-23
69.99 2013-03-24
这是我在这个例子中成功使用的数组。
> available_rooms > 0 > room_type = 1 King Bed
> available_rooms > 0 > total_rate = 119.98
> available_rooms > 0 > room_rates > 0 > room_rate = 59.99
> available_rooms > 0 > room_rates > 0 > room_date = 2013-03-23
> available_rooms > 0 > room_rates > 1 > room_rate = 59.99
> available_rooms > 0 > room_rates > 1 > room_date = 2013-03-24
> available_rooms > 1 > room_type = 1 King Bed
> available_rooms > 1 > total_rate = 119.98
> available_rooms > 1 > room_rates > 0 > room_rate = 59.99
> available_rooms > 1 > room_rates > 0 > room_date = 2013-03-23
> available_rooms > 1 > room_rates > 1 > room_rate = 59.99
> available_rooms > 1 > room_rates > 1 > room_date = 2013-03-24
> available_rooms > 2 > room_type = 2 Double Beds
> available_rooms > 2 > total_rate = 139.98
> available_rooms > 2 > room_rates > 0 > room_rate = 69.99
> available_rooms > 2 > room_rates > 0 > room_date = 2013-03-23
> available_rooms > 2 > room_rates > 1 > room_rate = 69.99
> available_rooms > 2 > room_rates > 1 > room_date = 2013-03-24
> available_rooms > 3 > room_type = 2 Double Beds
> available_rooms > 3 > total_rate = 139.98
> available_rooms > 3 > room_rates > 0 > room_rate = 69.99
> available_rooms > 3 > room_rates > 0 > room_date = 2013-03-23
> available_rooms > 3 > room_rates > 1 > room_rate = 69.99
> available_rooms > 3 > room_rates > 1 > room_date = 2013-03-24
答案 1 :(得分:0)
更像这样设置你的阵列
$data = array( 'user' => array('id' => "1", 'name' => "Test1", 'title' => 'Title 1', 'body' => 'Body 1'),
array('id' => "2", 'name' => "Test2", 'title' => 'Title 2', 'body' => 'Body 2'),
array('id' => "3", 'name' => "Test3", 'title' => 'Title 3', 'body' => 'Body 3')
);
之后,它有点像嵌套HTML标签,除了PHP中的key-&gt;值对(如果有意义的话)。
{user}
<h4>{name} : {id}</h4>
<span>{title}</span>
<p>
{body}
</p>
{/user}