您应该在将数据解析为Smarty之前准备好数据。
你可以这样做:
$result = array(
array('name' => 'Hockey Team 1', 'category_id' => 1),
array('name' => 'Hockey Team 2', 'category_id' => 2),
array('name' => 'Hockey Team 3', 'category_id' => 3),
array('name' => 'Football Team 1', 'category_id' => 4),
array('name' => 'Football Team 2', 'category_id' => 5),
array('name' => 'Football Team 3', 'category_id' => 6)
);
$sports = array();
foreach ($result as $team) {
$sport_parts = explode(' ', $team['name']);
$sport = array_shift($sport_part);
$team['name'] = join(' ', $sport_parts);
if (isset($sports[$sport]) === FALSE) {
$sports[$sport] = array();
}
$sports[$sport][] = $team;
}这将产生这样的数据集,很容易在Smarty中迭代:
array(2) {
["Hockey"]=>
array(3) {
[0]=>
array(2) {
["name"]=>
string(13) "Team 1"
["category_id"]=>
int(1)
}
[1]=>
array(2) {
["name"]=>
string(13) "Team 2"
["category_id"]=>
int(2)
}
[2]=>
array(2) {
["name"]=>
string(13) "Team 3"
["category_id"]=>
int(3)
}
}
["Football"]=>
array(3) {
[0]=>
array(2) {
["name"]=>
string(15) "Team 1"
["category_id"]=>
int(4)
}
[1]=>
array(2) {
["name"]=>
string(15) "Team 2"
["category_id"]=>
int(5)
}
[2]=>
array(2) {
["name"]=>
string(15) "Team 3"
["category_id"]=>
int(6)
}
}
}Smarty模板的一个例子:
{foreach from=$sports key=sport item=teams}
{$sport}
{foreach from=$teams item=team}
{$team['name']}{/foreach}
{/foreach}