Maison  >  Article  >  développement back-end  >  À propos de l'utilisation de l'imbrication de boucles intelligentes

À propos de l'utilisation de l'imbrication de boucles intelligentes

不言
不言original
2018-06-19 10:17:011646parcourir

Cet article présente principalement l'utilisation de l'imbrication de boucles intelligentes et analyse les compétences de mise en œuvre et les précautions associées des boucles imbriquées de modèles Smarty sous forme d'exemples. Les amis dans le besoin peuvent s'y référer

Cet article explique le. exemple d'utilisation de la boucle imbriquée intelligente. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

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");
?>

L'exemple d'écriture est le suivant suit :

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;);
?>

Le modèle s'écrit comme suit :

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>

Le point clé est $smarty.section. sec1.rownum est une variable Smarty. Dans la boucle de section, cette variable obtiendra la valeur d'index à partir de 1, donc lorsque rownum peut être divisé par 2, elle affichera fd273fcf5bcad3dfdad3c41bd81ad3e5 a34de1251f0d9fe1e645927f19a896e8 pour changer les colonnes du tableau (remarque ! est fd273fcf5bcad3dfdad3c41bd81ad3e5 devant a34de1251f0d9fe1e645927f19a896e8 à l'arrière). Le chiffre 2 est donc le nombre d’enregistrements que nous souhaitons présenter dans une colonne. Vous pouvez l'utiliser pour modifier d'autres méthodes de présentation différentes.

Les opérateurs incluent les éléments suivants  :

eq, ne, neq, gt, lt, lte, le, gte, ge, est pair, est impair, n'est pas pair , n'est pas impair, pas, mod, p par, pair par, impair par

Exemple :

<!--{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}-->

n'était pas couramment utilisé avant smarty, le site d'un ami a besoin d'être modifié ces deux derniers jours ; je l'ai utilisé pendant un moment et c'est assez intéressant.

Remarque sur la capture :

La fonction de la fonction de capture est de collecter les données générées par le modèle dans une variable au lieu de les afficher sur la page

Toutes les données entre {capture name="foo"} et {/capture} sont reçues dans la variable spécifiée par l'attribut de nom de la fonction ($foo)

Les informations collectées peuvent être utilisées dans le. variable spéciale $smarty.

Par exemple, capture.foo collecte les données ci-dessus. Si la fonction n'a pas d'attribut de nom, "default" sera utilisé

Chaque {capture} doit. correspond à { /capture}, et la fonction de capture ne peut pas être imbriquée

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. Pour plus de contenu connexe, veuillez prêter attention à. le site PHP chinois !

Recommandations associées :

À propos de l'utilisation de section et de sectionelse, les fonctions intégrées du moteur de modèles PHP Smarty

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn