ホームページ > バックエンド開発 > PHPチュートリアル > Smarty ループ操作_PHP チュートリアル

Smarty ループ操作_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:31:04
オリジナル
880 人が閲覧しました

PHP Smarty テンプレート エンジンでのデータ ループには、foreach ループとセクション ループという 2 つの方法があります。以下では、これら 2 つのループ方法を 1 つずつ紹介します。

(1) スマート foreach ループ

foreach は、数値インデックス配列のような連想配列を反復処理するために使用されます。数値インデックス配列のみにアクセスできるセクションとは異なり、foreach の構文はセクションの構文よりもはるかに単純ですが、妥協点として、次の目的でのみ使用できます。単一の配列。各 foreach タグは終了タグ/foreach と組み合わせる必要があります。

foreach ループには、from、item、name、key の 4 つの属性があり、そのうちの from と item は必須です。

Foreach ループは入れ子にすることができ、入れ子になった foreach ループの名前は互いに異なる必要があります。

{foreachelse} フラグメントは、from 属性に値がない場合に実行されます。

foreach ループには、独自のプロパティを持つ変数もあり、{$smarty.foreach.name.property} を通じてアクセスできます。ここで、「name」は name プロパティです。例:

$smarty.foreach.name.index ゼロから始まる現在の配列インデックス。

$smarty.foreach.name.iteration 現在のループ数は、インデックスとは異なり、1 から始まり、ループするたびに 1 ずつ増加します。

$smarty.foreach.name.first は、現在の {foreach} ループが初期位置にある場合に TRUE になります。

$smarty.foreach.name.last は、現在の {foreach} ループが最終位置にある場合に TRUE になります。

$smarty.foreach.name.show show は、{foreach} のパラメータです。ブール値です。値が FALSE の場合、{foreach} は表示されません。対応する {foreachelse} があればそれが表示されます。

$smarty.foreach.name.total 合計には、{foreach} がループする回数が含まれており、{foreach} 内またはその後で使用できます。

注: name 属性は、{section} とは異なり、{foreach} 属性にアクセスする場合にのみ有効です。未定義の名前の {foreach} 属性にアクセスしてもエラーはスローされませんが、予測できない結果が発生します。

例:

{foreach from=$newsList item=news key=newsId name=news}
php Smarty foreach ループの例


{/foreach}

(2)スマートセクションループ

{セクション名="sn" ループ="$BusinesList4"}

  • {$smarty.section.sn.index+1}{$BusinesList4[sn].2}< ;/リ>
    {/セクション}

    インデックスと連想配列の両方が非常に便利に使用できることがわかります。以下では、このセクションの各属性の説明を紹介します:

    1. スマートセクションの属性

    name: (必須) は、ループの一意の名前を示すだけであり、前に $ 記号はありません。

    loop: (必須) は、ループする配列を示すために使用されます (つまり、ループされる配列名)。

    start: (オプション) ループ実行の開始位置。値が負の場合、開始位置は配列の末尾から計算されます。たとえば、配列に 7 つの要素がある場合、start を -2 として指定します。現在の配列のインデックスへのポイントは 5 です。不正な値 (ループ配列の下限を超える) は、最も近い正当な値に自動的に調整されます。

    step: (オプション) 他の言語のループと同様、ステップ サイズです。負の数の場合は、逆の順序でループします。

    max: (オプション) ループの最大添字。1 の場合は 1 回のみループし、2 の場合は 2 回ループします。

    show: (オプション) デフォルトは true で、表示されます。 {sectionelse} が設定されている場合。配列に内容がない場合はこの部分の内容が表示され、show が false の場合はこの部分が表示されることを示します。 {sectionelse} が設定されていない場合、配列は出力されません。

    2.smarty のセクションの変数

    index: 現在のループのインデックスを表示するために使用され、0 から始まり (start 属性が指定されている場合はこの値から開始されます)、毎回 1 ずつ増加します (step 属性が指定されている場合は決定されます) step が指定されていない場合、この値は start 属性と同様に、0 から始まることを除いて、繰り返しと同様の機能を持ちます。

    index_prev: 前のループ インデックス値を表示するために使用されます。ループが開始されると、この値は -1 になります。

    index_next: ループが最後に実行されるとき、この値はまだ現在のインデックス値より 1 大きい値を表示するために使用されます (step が指定されている場合は、この値に依存します)。

    iteration: start、step、max 属性の影響を受けるインデックス属性とは異なり、値は常に 1 から始まります (インデックスは 0 から始まります)。 2 つは同等です。

    first: 現在のループが初めて実行される場合、first は true に設定されます。

    last: 現在のループが最後に実行される場合、last は true に設定されます。

    rownum: ループの数を表示するために使用されます。この属性は反復のエイリアスであり、2 つは同等です。

    loop: 最後のループのインデックス値を表示するために使用されます。この値はループ内またはループ終了後に使用できます。

    show: は、section のパラメータです。show の値は、true または false のブール値です。sectionelse 句が指定されている場合、ループは表示されません。 .

    total: ループ実行の合計数を表示するために使用されます。この属性はループ中または実行後に呼び出すことができます。

    簡単な例:

    {セクション名=ループループ=6}
    ID: {$smarty.section.loop.index+1}
    {/セクション}

    スマートセクションのネストされたループの例:

    {セクション名=”sn” ループ=”$dis_cType”}
    {$BusinesList=${$dis_cType[sn].2}}
    {セクション名=sn2ループ=$BusinesList}

  • {$smarty.section.sn2.index+1}{$BusinesList[sn2].2}< ;/リ>
    {/セクション}
    {/section}

    興味がありそうな記事

    • smarty テンプレート内のループ テーブルは不完全な td を補足します
    • smarty テンプレート内の for ループの拡張プラグイン
    • smarty はテーブルをループし、テーブルを補足します足りない場合はtd
    • smarty変数演算子まとめ
    • smartyテンプレート変数演算子まとめ
    • smartyテンプレートの情報に最新のタグを追加
    • smartyテンプレートで乱数を生成する方法
    • Smarty論理演算記号まとめ

    www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/764145.html技術記事 PHP Smarty テンプレート エンジンでのデータ ループには、foreach ループとセクション ループという 2 つの方法があります。以下では、これら 2 つのループ方法を 1 つずつ紹介します。 (1) スマート foreach ループ...
  • 関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート