この記事では主にPHPテンプレートエンジンSmartyの組み込み関数sectionとsectionelseの使い方を紹介し、ループ処理のテクニックとsectionelseの使い方をサンプル形式で詳しく解説しています。
セクションは Smarty テンプレートにあります。foreach に加えて、ループを処理する別の方法であるセクションは、foreach ステートメントよりも柔軟であり、同じループ特性を備えていることに加えて、多くの追加オプションも提供します。ループの実行をより適切に制御します。テンプレートでは、ペアのセクション タグを使用する必要があります。セクションの属性については、次の表を参照してください。
必須ですか? | デフォルト値 | 説明 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Yes | n/a | ループの名前 | ループ | |||||||||||||||||||||||
はい | n /a | ループ数を決定する変数名 | start | |||||||||||||||||||||||
No | 0 | の場合。 value が負の数値である場合、開始位置は配列の末尾から数えます。例: 配列内に 7 つの要素があり、start を -2 として指定した場合、現在の配列を指すインデックスは 5 です。 (ループ配列の下限を超える) は、最も近い有効な値に自動的に調整されます。 | step | |||||||||||||||||||||||
No | 1 | この値は、ループのステップ サイズを決定します。たとえば、step=2 を指定すると、インデックス 0、2、4 などの要素のみが走査されます。step が負の値の場合、配列を走査するときに後ろから前に走査します。 | max | |||||||||||||||||||||||
No | 1 | ループの最大実行数を設定します | show | |||||||||||||||||||||||
No | true | ループします。 |
例を使用して、Smarty での {section} と {sectionelse} の使用法を示します。 アイデアの例: データベースからコンテンツを取得し、それを配列変数 $_html に割り当て、この配列変数をテンプレートに割り当て、テンプレート内の配列を走査します。 データベース、メインファイルindex.php、Smartyテンプレート初期化ファイルinit.inc.phpについては、以前の記事「PHPテンプレートエンジンSmarty組み込み関数foreachとforeachelseの使用状況の分析」 /tpl/indexを参照してください。 tpl <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>section,sectionelse</title> </head> <body> <table align="center" border="1" width="800"> <tr> <th>编号(iteration)</th> <th>编号(rownum)</th> <th>姓名</th> <th>电子邮件</th> <th>添加时间</th> </tr> <{section loop=$data name="ls" max="100" start="0" step="2" }> <!-- 使用 section 遍历数组 $data,max 表示最多可以循环多少条,start 表示从哪个数组下标开始显示,step决定了循环的步长,如果设置为2,那么将遍历下标为0,2,4……的元素 --> <!-- 在此,我们做几个保留变量 $smarty.section 的操作 --> <!-- 当数据显示第一条的时候,第一行的表格背景为黄色,使用属性:first --> <!-- 当数据显示最后一条的时候,最后一行的表格背景为蓝色,使用属性:last --> <{if $smarty.section.ls.first}> <tr align="center" bgcolor="#FFFF00"> <{elseif $smarty.section.ls.last}> <tr align="center" bgcolor="#0000FF"> <{else}> <tr align="center"> <{/if}> <td><{$smarty.section.ls.iteration}></td> <!-- iteration 是保留变量中显示行号的属性 --> <td><{$smarty.section.ls.rownum}></td> <!-- rownum 是保留变量中显示行号的属性 --> <td><{$data[ls].username}></td> <!-- 输出数组第二维下标为 username 的元素值 --> <td><{$data[ls].email}></td> <!-- 输出数组第二维下标为 email 的元素值 --> <td><{$data[ls].addTime}></td> <!-- 输出数组第二维下标为 addTime 的元素值 --> </tr> <{sectionelse}> <!-- 如果分配过来的数组没有内容的话,显示下面内容 --> <tr> <td colspan="5">对不起!暂时没有数据。</td> </tr> <{/section}> <{if $data}> <!-- 如果循环的次数不为空的话,那么使用 Smarty 的保留变量 {$smarty.section} 显示出循环的次数 --> <tr> <td align="center" colspan="5">循环的次数为:<{$smarty.section.ls.total}></td> </tr> <{/if}> </table> </body> </html> ログイン後にコピー 実行結果: セクション ループ領域で使用できる変数
概要: 上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。 関連おすすめ: |
以上がPHPテンプレートエンジンSmarty組み込み関数のセクション、セクション別の使用方法と例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。