我在smarty中显示一些嵌套数组结果时遇到了一些问题…这是我的文件:
$searchResults
—一个数组,其中每一行都是一个结果集。没问题。$searchResults[$row][users][]
-这是我创建的嵌套数组。如果这行搜索结果中存在用户,我想显示每个用户....
那么,这里我们有我的smarty代码:
{section name=i loop=$searchResults}
{section name=j loop=$searchResults[i].users}
{$searchResults[i].users[j].firstName}
{/section}
{/section}
然而,这似乎不适合我…它在我的表中以一种疯狂的方式显示用户结果,而不是在相同的<td></td>
中,section被放置在里面。
UPDATE - Using For Each,使用更多代码…
{section name=i loop=$searchResults}
<tr>
<td>{$searchResults[i].id}</td>
<td>
{if $searchResults[i].users}
{foreach from=$searchResults[i].users item=user}
{$user.firstName} {$user.lastName} <br>
{/foreach}
{/if}
</td>
</tr>
{/section}
显示如下所示的表:
ID
ID
ID
Bob Boberton
John Appleton
Chris Cooley
Carl Agley
Cynthia Nobody
当它应该是这样的:
ID Bob Boberton
John Appleton
ID Chris Cooley
ID Carl Agley
Cynthia Nobody
您可以进一步使用另一个foreach
作为主循环。我发现它们更容易阅读和找到问题所在。
{foreach from=$searchResults item=result}
<tr>
<td>{$result.id}</td>
<td>
{if $result.users}
{foreach from=$result.users item=user}
{$user.firstName} {$user.lastName}<br/>
{/foreach}
{/if}
</td>
</tr>
{/foreach}
也就是说,我无法重现你对$searchResults
描述的问题;你的循环和我的循环最后都是一样的。下面是我使用的数组。
$smarty->assign('searchResults', array(
array(
'id' => 1,
'users' => array(
array(
'firstName' => 'Bob',
'lastName' => 'Boberton',
),
array(
'firstName' => 'John',
'lastName' => 'Appleton',
),
),
),
array(
'id' => 10,
'users' => array(
array(
'firstName' => 'Chris',
'lastName' => 'Cooley',
),
),
),
array(
'id' => 100,
'users' => array(
array(
'firstName' => 'Carl',
'lastName' => 'Agley',
),
array(
'firstName' => 'Cynthia',
'lastName' => 'Nobody',
),
),
),
));