1

次のような配列に以下を出力する関数があります。

Array ( [0] => Array ( [id] => 1 [name] => name

しかし、私はforeachこれを通り抜けることができず、理由がわかりませんか?

         <ul>
             {foreach from=$array item=item}
              <li>{$item.name}</li>
            {/foreach}
         </ul>

アップデート:

{foreach item=topitem from=$getlocations}
         {foreach item=item from=$topitem}
          <option value="{$item.locationid}">{$item.name}</option>
          {/foreach}
      {/foreach}

働き:

function getlocations()
    {
      global $smarty;

      $query = placeholderstackoverflow;

      return $query;

      $smarty->assign('getlocations', $getlocations);
    }
4

1 に答える 1

3

Smarty 3.xx を使用していると仮定すると、コードは実際には連想配列を介して実行されます。

PHP コードの例:

$tpl->assign('yourarray', array( 
  0 => array ( 
      'id' => 1, 
      'name' => 'name'
    )
  )
);

smarty コードの例:

<ul>
{foreach from=$yourarray item=item}
    <li>{$item.name}</li>
{/foreach}
</ul>

...次の HTML 出力を生成します。

<ul>
    <li>name</li>
</ul>

これが実際の結果または期待される結果でない場合は、さらにコードを追加してください。

チェックアウト、

  • Smarty バージョン 3.xx を使用している場合
  • あなたの配列が本当に適切に形成されているかどうか。

アップデート:

Smarty 2.xx を使用しているため、その間に foreach が変更されていることに注意してください。

ネストされた配列をウォークスルーするには、foreach を 1 つだけ使用するのではなく、さらに多くの foreach を使用する必要があります。バージョン 2.xxのマニュアルの例 7.8 を確認してください。

于 2012-09-17T05:59:33.697 に答える