ホームページ バックエンド開発 PHPチュートリアル Smarty Loop ネスティングの使用方法について

Smarty Loop ネスティングの使用方法について

Jun 19, 2018 am 10:17 AM
smarty 入れ子になった サイクル

この記事では、主に Smarty ループのネストの使用方法を紹介し、Smarty テンプレートのネストされたループの実装スキルと関連する注意事項をサンプルの形式で分析します。必要な友人は参考にしてください。この記事では、スマートなネストされたループの使用法について説明しています。参考のために皆さんと共有してください。詳細は次のとおりです。

test3.php:

<?php
require "main.php";
$forum = array(
    array("category_id" => 1, "category_name" => "公告区",
      "topic" => array(
        array("topic_id" => 1, "topic_name" => "站务公告")
      )
    ),
    array("category_id" => 2, "category_name" => "文学专区",
      "topic" => array(
        array("topic_id" => 2, "topic_name" => "好书介绍"),
        array("topic_id" => 3, "topic_name" => "奇文共赏")
      )
    ),
    array("category_id" => 3, "category_name" => "电脑专区",
      "topic" => array(
        array("topic_id" => 4, "topic_name" => "硬件周边"),
        array("topic_id" => 5, "topic_name" => "软件讨论")
      )
    )
);
$tpl->assign("forum", $forum);
$tpl->display("test3.htm");
?>
ログイン後にコピー

サンプルの書き方は次のとおりです。

templates/test3.htm:

<html>
<head>
<title>循环嵌套测试</title>
</head>
<body>
<table width="200" border="0" align="center" cellpadding="3" cellspacing="0">
  <{section name=sec1 loop=$forum}>
  <tr>
    <td colspan="2"><{$forum[sec1].category_name}></td>
  </tr>
  <{section name=sec2 loop=$forum[sec1].topic}>
  <tr>
    <td width="25"> </td>
    <td width="164"><{$forum[sec1].topic[sec2].topic_name}></td>
  </tr>
  <{/section}>
  <{/section}>
</table>
</body>
</html>
ログイン後にコピー

#test2.php:

<?php
require_once(&#39;./include/db_fns.php&#39;);
include_once("./Smarty/libs/Smarty.class.php"); //包含Smarty类文件
$smarty = new Smarty(); //建立Smarty实例对象$Smarty
$smarty->template_dir = "./templates/dedecms";//设置模板目录
$smarty->compile_dir = "templates/templates_c"; //设置编译目录
$smarty->assign("template_url", "./");
$smarty->assign("$site_url", "//www.jb51.net/");
$smarty->assign("$site_name", "文章管理系统");
$smarty->left_delimiter = "<{"; //设置左边界符
$smarty->right_delimiter = "}>"; //设置右边界符
$db_conn = db_connect();
$query = "SELECT cat_ID,cat_name FROM categories ORDER BY cat_ID DESC";
$result = mysql_query($query);
$i = 5;
while(($row = mysql_fetch_array($result)) && $i > 0)
{
        $query2="SELECT ID, post_title, post_date
                FROM post
                WHERE post.post_category =$row[cat_ID]
                AND post_status <> &#39;unpbulish&#39;
                ORDER BY post_date DESC";
        $result2=mysql_query($query2);
        $i = 5; 
        while(($row2 = mysql_fetch_array($result2)) && $i > 0)
        {
            $row2[post_date]=date(&#39;m-d&#39;,strtotime($row2[post_date]));
            $category = array("cat_ID"=>"$row[cat_ID]","cat_name"=>"$row[cat_name]",
            "post"=>array("ID"=>"$row2[ID]",
            "post_title"=>"$row2[post_title]" ,
            "post_category"=>"$row2[post_category]" ,
            "post_date"=>"$row2[post_date]"));
            $i--;
        }
}
$smarty->assign("forum", $category);
$smarty->display("test2.htm");
?>
ログイン後にコピー

test2 .htm:

<html>
  <head>
  <title>嵌套循环测试</title>
  </head>
  <body>
  <table width="200" border="0" align="center" cellpadding="3" cellspacing="0">
  <{section name=sec1 loop=$forum}>
      <tr>
      <td colspan="2"><{$forum[sec1].cat_id}></td>
      </tr>
        <{section name=sec2 loop=$forum[sec1].post}>
          <tr>
          <td width="25"> </td>
          <td width="164"><{$forum[sec1].post[sec2].post_title}></td>
          </tr>
        <{/section}>
  <{/section}>
  </table>
</body>
</html>
ログイン後にコピー

test4.php:

<?php
require "main.php";
$my_array = array(
array("value" => "0"),
array("value" => "1"),
array("value" => "2"),
array("value" => "3"),
array("value" => "4"),
array("value" => "5"),
array("value" => "6"),
array("value" => "7"),
array("value" => "8"),
array("value" => "9"));
$tpl->assign("my_array", $my_array);
$tpl->display(&#39;test4.htm&#39;);
?>
ログイン後にコピー

テンプレートは次のように記述されます。

templates/test4.htm:

<html>
<head>
<title>横向重复表格测试</title>
</head>
<body>
<table width="500" border="1" cellspacing="0" cellpadding="3">
<tr>
<{section name=sec1 loop=$my_array}>
<td><{$my_array[sec1].value}></td>
<{if $smarty.section.sec1.rownum is p by 2}>
</tr>
<tr>
<{/if}>
<{/section}>
</tr>
</table>
</body>
</html>
ログイン後にコピー

重要なポイントは、Smarty 変数 $smarty.section です。セクションループ内の sec1.rownum 変数は 1 から始まるインデックス値を取得するため、rownum が 2 で割り切れる場合は、 を出力してテーブルを変更します (注意! ;/tr> の前 後ろ)したがって、数値 2 は、列に表示するレコードの数です。これを使用して、他のさまざまな表示方法を変更できます。

演算子には次のものが含まれます

:

eq、ne、neq、gt、lt、lte、le、gte、ge、偶数、奇数、偶数ではない、奇数ではありません、not、mod、p by、even by、odd by

例:

<!--{if $bigsize ge &#39;650&#39;}-->
   <img src="photo/<!--{$photo}-->" border="0" width="650" class="product_photo" />
<!--{else}-->
    <img src="photo/<!--{$photo}-->" border="0" class="product_photo" />
<!--{/if}-->
ログイン後にコピー

Smarty は以前は一般的に使用されていませんでした, 過去 2 日間に友人の Web サイトを変更する必要がありました。しばらく使用しましたが、非常に興味深いものでした。

キャプチャについての説明:

キャプチャ関数の機能は、テンプレートによって出力されたデータをページに出力するのではなく、変数に収集することです。 ##{capture name="foo"} と {/capture} の間のデータは、関数 ($foo) の name 属性で指定された変数で受信されます。特別な変数 $smarty で使用されます。

たとえば、capture.foo は、関数に name 属性がない場合、「default」が使用されます。 Capture} は { /capture} に対応する必要があり、capture 関数をネストすることはできません。

上記がこの記事の全内容です。その他の関連コンテンツについては、こちらをご覧ください。 PHP 中国語 Web サイトに注意してください。

関連する推奨事項:

PHP テンプレート エンジン Smarty の組み込み関数の使用方法についてのセクションとその他のセクション

#

以上がSmarty Loop ネスティングの使用方法についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go の汎用関数を相互に入れ子にすることはできますか? Go の汎用関数を相互に入れ子にすることはできますか? Apr 16, 2024 pm 12:09 PM

ネストされたジェネリック関数 Go 1.18 のジェネリック関数では、複数の型に適用する関数を作成でき、ネストされたジェネリック関数により再利用可能なコード階層を作成できます。ジェネリック関数は相互にネストでき、ネストされたコードの再利用構造を作成できます。フィルターを構成し、関数をパイプラインにマッピングすることで、再利用可能なタイプセーフなパイプラインを作成できます。ネストされたジェネリック関数は、再利用可能でタ​​イプセーフなコードを作成するための強力なツールを提供し、コードをより効率的で保守しやすくします。

Vue フォーム処理を使用してフォームの再帰的ネストを実装する方法 Vue フォーム処理を使用してフォームの再帰的ネストを実装する方法 Aug 11, 2023 pm 04:57 PM

Vue フォーム処理を使用してフォームの再帰的ネストを実装する方法 はじめに: フロントエンド データ処理とフォーム処理が複雑になるにつれて、複雑なフォームを処理する柔軟な方法が必要です。人気のある JavaScript フレームワークとして、Vue はフォームの再帰的なネストを処理するための多くの強力なツールと機能を提供します。この記事では、Vue を使用してこのような複雑なフォームを処理する方法を紹介し、コード例を添付します。 1. フォームの再帰的なネスト シナリオによっては、再帰的なネストに対処する必要がある場合があります。

HTML でネストされたテーブルを作成するにはどうすればよいですか? HTML でネストされたテーブルを作成するにはどうすればよいですか? Sep 09, 2023 pm 10:05 PM

テーブルは Web 開発の基本的かつ重要な側面であり、情報を整然とした明確な形式で表示するために使用されます。ただし、より複雑なデータを表示する必要があり、ネストされたテーブルの使用が必要になる場合もあります。ネストされたテーブルは、他のテーブルセル内にあるテーブルです。この記事では、HTML でネストされたテーブルを構築するプロセスを説明します。概念をより効果的に理解するのに役立つ図付きの細心の注意を払った詳細な説明が記載されています。初心者でも経験豊富な Web デザイナーでも、この記事では、HTML を使用したネストされたテーブルの作成に習熟するために必要な知識と専門知識を提供します。ネストされたテーブルの作成を開始する前に、HTML テーブルの基本構成を理解する必要があります。 HTML テーブルは、<table> 要素によって実装されます。

ラムダ式がループから抜け出す ラムダ式がループから抜け出す Feb 20, 2024 am 08:47 AM

ラムダ式がループから抜け出すには、特定のコード例が必要です。プログラミングにおいて、ループ構造は頻繁に使用される重要な構文です。ただし、特定の状況では、現在のループ反復を終了するだけでなく、ループ本体内で特定の条件が満たされたときにループ全体から抜け出したい場合があります。このとき、ラムダ式の特性は、ループから抜け出すという目標を達成するのに役立ちます。ラムダ式は匿名関数を宣言する方法であり、内部的に単純な関数ロジックを定義できます。通常の関数宣言とは異なり、

Go言語におけるループと再帰の比較研究 Go言語におけるループと再帰の比較研究 Jun 01, 2023 am 09:23 AM

注: この記事では、Go 言語の観点からループと再帰を比較します。プログラムを作成するとき、一連のデータや操作を繰り返し処理する必要がある状況に遭遇することがよくあります。これを実現するには、ループまたは再帰を使用する必要があります。ループと再帰はどちらも一般的に使用される処理方法ですが、実際のアプリケーションではそれぞれにメリットとデメリットがあるため、実際の状況を考慮してどちらの方法を使用するかを選択する必要があります。この記事では、Go 言語におけるループと再帰の比較研究を行います。 1. ループ ループとは、特定のコードを繰り返し実行する仕組みです。 Go言語には主に3つのタイプがあります

C++ でネストされた例外処理を実装するにはどうすればよいですか? C++ でネストされた例外処理を実装するにはどうすればよいですか? Jun 05, 2024 pm 09:15 PM

ネストされた例外処理は、ネストされた try-catch ブロックを通じて C++ に実装され、例外ハンドラー内で新しい例外を発生させることができます。ネストされた try-catch ステップは次のとおりです。 1. 外側の try-catch ブロックは、内側の例外ハンドラーによってスローされた例外を含むすべての例外を処理します。 2. 内部の try-catch ブロックは特定のタイプの例外を処理し、スコープ外の例外が発生した場合、制御は外部例外ハンドラーに渡されます。

PHPは配列内のすべての値を返して配列を形成します PHPは配列内のすべての値を返して配列を形成します Mar 21, 2024 am 09:06 AM

この記事では、PHP が配列のすべての値を返して配列を形成する方法について詳しく説明します。非常に実用的であると編集者が考えたので、参考として共有します。この記事を読んで何かを得ることができれば幸いです。 array_values() 関数の使用 array_values() 関数は、配列内のすべての値の配列を返します。元の配列のキーは保持されません。 $array=[&quot;foo&quot;=&gt;&quot;bar&quot;,&quot;baz&quot;=&gt;&quot;qux&quot;];$values=array_values($array);//$values は [&quot;bar&quot;,&quot;qux&quot;] になりますループを使用すると、配列のすべての値を手動で取得し、新しい値に追加できます。

Java 関数での再帰呼び出しの代替手段は何ですか? Java 関数での再帰呼び出しの代替手段は何ですか? May 05, 2024 am 10:42 AM

Java 関数における再帰呼び出しの反復による置き換え Java では、再帰はさまざまな問題を解決するために使用される強力なツールです。ただし、場合によっては、反復を使用する方が効率が高く、スタック オーバーフローが発生しにくいため、より良いオプションになる場合があります。反復の利点は次のとおりです。 再帰呼び出しごとに新しいスタック フレームを作成する必要がないため、より効率的です。スタック領域の使用量が制限されているため、スタック オーバーフローが発生する可能性は低くなります。再帰呼び出しの代替としての反復メソッド: Java には、再帰関数を反復関数に変換するメソッドがいくつかあります。 1. スタックを使用する スタックを使用するのが、再帰関数を反復関数に変換する最も簡単な方法です。スタックは、関数呼び出しスタックに似た、後入れ先出し (LIFO) データ構造です。パブリックインファ

See all articles