Вы можете пойти дальше и использовать другой 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',
),
),
),
));