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

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

Jun 19, 2018 am 10:17 AM
smarty 嵌套 循环

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");
?>
Copier après la connexion

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>
Copier après la connexion

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");
?>
Copier après la connexion

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>
Copier après la connexion

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;);
?>
Copier après la connexion

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>
Copier après la connexion

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 pour changer les colonnes du tableau (remarque ! est devant à 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}-->
Copier après la connexion

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les fonctions génériques de Go peuvent-elles être imbriquées les unes dans les autres ? Les fonctions génériques de Go peuvent-elles être imbriquées les unes dans les autres ? Apr 16, 2024 pm 12:09 PM

Fonctions génériques imbriquées Les fonctions génériques de Go 1.18 permettent la création de fonctions qui s'appliquent à plusieurs types, et les fonctions génériques imbriquées peuvent créer des hiérarchies de code réutilisables : les fonctions génériques peuvent être imbriquées les unes dans les autres, créant ainsi une structure de réutilisation de code imbriquée. En composant des filtres et des fonctions de mappage dans un pipeline, vous pouvez créer des pipelines réutilisables de type sécurisé. Les fonctions génériques imbriquées fournissent un outil puissant pour créer du code réutilisable et de type sécurisé, rendant votre code plus efficace et plus maintenable.

Comment utiliser le traitement des formulaires Vue pour implémenter l'imbrication récursive des formulaires Comment utiliser le traitement des formulaires Vue pour implémenter l'imbrication récursive des formulaires Aug 11, 2023 pm 04:57 PM

Comment utiliser le traitement de formulaire Vue pour implémenter l'imbrication récursive de formulaires Introduction : Alors que la complexité du traitement des données frontales et du traitement des formulaires continue d'augmenter, nous avons besoin d'un moyen flexible de gérer les formulaires complexes. En tant que framework JavaScript populaire, Vue nous fournit de nombreux outils et fonctionnalités puissants pour gérer l'imbrication récursive des formulaires. Cet article expliquera comment utiliser Vue pour gérer des formulaires aussi complexes et joindra des exemples de code. 1. Imbrication récursive de formulaires Dans certains scénarios, nous pouvons avoir besoin de gérer une imbrication récursive.

Comment créer des tableaux imbriqués en HTML ? Comment créer des tableaux imbriqués en HTML ? Sep 09, 2023 pm 10:05 PM

Les tableaux constituent un aspect fondamental et crucial du développement Web et sont utilisés pour présenter les informations dans un format ordonné et clair. Cependant, il peut y avoir des situations dans lesquelles des données plus complexes doivent être présentées, nécessitant l'utilisation de tableaux imbriqués. Les tableaux imbriqués sont des tableaux situés dans d’autres cellules du tableau. Dans cet article, nous vous guiderons tout au long du processus de création de tableaux imbriqués en HTML, avec des explications méticuleusement détaillées et des illustrations pour vous aider à comprendre les concepts plus efficacement. Que vous soyez un débutant ou un concepteur de sites Web expérimenté, cet article vous fournira les connaissances et l'expertise dont vous avez besoin pour maîtriser la création de tableaux imbriqués à l'aide de HTML. Avant de commencer à explorer la création de tableaux imbriqués, il est nécessaire de comprendre la composition de base des tableaux HTML. Les tableaux HTML sont implémentés via l'élément <table>

L'expression lambda sort de la boucle L'expression lambda sort de la boucle Feb 20, 2024 am 08:47 AM

L'expression Lambda sort de la boucle, des exemples de code spécifiques sont nécessaires en programmation, la structure de boucle est une syntaxe importante qui est souvent utilisée. Cependant, dans certaines circonstances, nous pouvons vouloir sortir de la boucle entière lorsqu'une certaine condition est remplie dans le corps de la boucle, plutôt que de simplement terminer l'itération en cours de la boucle. À l'heure actuelle, les caractéristiques des expressions lambda peuvent nous aider à atteindre l'objectif de sortir de la boucle. L'expression Lambda est un moyen de déclarer une fonction anonyme, qui peut définir une logique de fonction simple en interne. C'est différent d'une déclaration de fonction ordinaire,

Une étude comparative des boucles et de la récursivité en langage Go Une étude comparative des boucles et de la récursivité en langage Go Jun 01, 2023 am 09:23 AM

Remarque : Cet article compare les boucles et la récursivité du point de vue du langage Go. Lors de l'écriture de programmes, vous rencontrez souvent des situations dans lesquelles une série de données ou d'opérations doivent être traitées de manière répétée. Pour y parvenir, nous devons utiliser des boucles ou de la récursivité. Les boucles et les récursions sont toutes deux des méthodes de traitement couramment utilisées, mais dans les applications pratiques, elles présentent chacune des avantages et des inconvénients, c'est pourquoi la situation réelle doit être prise en compte lors du choix de la méthode à utiliser. Cet article mènera une étude comparative des boucles et de la récursivité dans le langage Go. 1. Boucle Une boucle est un mécanisme qui exécute de manière répétée un certain morceau de code. Il existe trois principaux types de langage Go

Comment implémenter la gestion des exceptions imbriquées en C++ ? Comment implémenter la gestion des exceptions imbriquées en C++ ? Jun 05, 2024 pm 09:15 PM

La gestion des exceptions imbriquées est implémentée en C++ via des blocs try-catch imbriqués, permettant de déclencher de nouvelles exceptions dans le gestionnaire d'exceptions. Les étapes try-catch imbriquées sont les suivantes : 1. Le bloc try-catch externe gère toutes les exceptions, y compris celles levées par le gestionnaire d'exceptions interne. 2. Le bloc try-catch interne gère des types spécifiques d'exceptions, et si une exception hors de portée se produit, le contrôle est confié au gestionnaire d'exceptions externe.

PHP renvoie toutes les valeurs du tableau pour former un tableau PHP renvoie toutes les valeurs du tableau pour former un tableau Mar 21, 2024 am 09:06 AM

Cet article expliquera en détail comment PHP renvoie toutes les valeurs d'un tableau pour former un tableau. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. . Utilisation de la fonction array_values() La fonction array_values() renvoie un tableau de toutes les valeurs d'un tableau. Il ne conserve pas les clés du tableau d'origine. $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values ​​​​sera ["bar","qux"]Utilisation une boucle peut utiliser une boucle pour obtenir manuellement toutes les valeurs du tableau et les ajouter à un nouveau

Quelles sont les alternatives aux appels récursifs dans les fonctions Java ? Quelles sont les alternatives aux appels récursifs dans les fonctions Java ? May 05, 2024 am 10:42 AM

Remplacement des appels récursifs dans les fonctions Java par itération En Java, la récursivité est un outil puissant utilisé pour résoudre divers problèmes. Cependant, dans certains cas, l’utilisation de l’itération peut s’avérer une meilleure option car elle est plus efficace et moins sujette aux débordements de pile. Voici les avantages de l'itération : Plus efficace puisqu'elle ne nécessite pas la création d'un nouveau stack frame à chaque appel récursif. Les débordements de pile sont moins susceptibles de se produire car l'utilisation de l'espace de pile est limitée. Méthodes itératives comme alternative aux appels récursifs : Il existe plusieurs méthodes en Java pour convertir des fonctions récursives en fonctions itératives. 1. Utiliser la pile L'utilisation de la pile est le moyen le plus simple de convertir une fonction récursive en fonction itérative. La pile est une structure de données dernier entré, premier sorti (LIFO), similaire à une pile d'appels de fonction. publicintfa

See all articles