SMARTY 二次循环的请教
//所有版块@$row_fid = "SELECT * FROM `forum_forum` ORDER BY `displayorder` ASC";$stmt = $pdo->prepare($row_fid);$stmt->execute();$row_forum = $stmt->fetchAll(PDO::FETCH_ASSOC); //主题分类 foreach ($row_forum as $key => $value) { $fid = $value["fid"]; @$sql = "SELECT `typeid`,`name` FROM `forum_topic_type` WHERE `fid` = $fid"; $stmt = $pdo->prepare($sql); $stmt->execute(); $row_type = $stmt->fetchAll(PDO::FETCH_ASSOC); } print_r($row_type);$smarty -> assign("all_forum",$row_forum);
代码是给各位看现在的逻辑 但没成功
学会SMARTY时间不长
有两张表
forum_forum 是讨论版块ID 主要是`name`, `fid`
forum_topic_type 是讨论版块的主题分类ID 主要是`typeid`, `name`, `fid`
本来
我是先把
forum_forum 列出所有版块,然后加到smarty的assign
成功在前台的所有版块列表中,显示出来
但想在版块名称的下方,把此讨论版块的旗下所有「主题分类」都循环出来,
但发现,这些东西(这张表forum_forum )已在前台循环了, 我无法取得fid 来循环 相关的主题分类,因为循环结果的ID已经在模板中才能取得
所以想了想...在smarty的assign之前,试试foreach一下有什么结果,
然后试试看能不能合并成同一个组数再assign,发觉有点不行
所以想请教一下各位前辈
己想过的解决方法
1. 合并多表查询,但是主题分类也不只一个...所以就放弃这方法
2. 做个smarty 插件,已试了,但是也是卡住了不能前进
其实SMARTY这卖二次循环问题已困扰很久,但好像不能再逃避,虚心请教,希望彻底了解这类问题
求指教!
回复讨论(解决方案)
另外也补充问个问题
我用SMARTY自己做 modifier.xxx.php 这类插件时,平时是常想顺利的
但为什么一用到数据库就完全不行?
我是用PDO的
因为没把$pdo这类句柄传入? 但是这种插件是由 模板直接调用,我根本就不能加入$pdo
我也试过加插件的function 内引入数据库文件,但也是表示数据库操作有误
请问有什么解决方案吗? 还是插件这部分根本不能操作数据库???
哪一步没成功?$row_type没值吗?
1.通过模板处理:类表 关联 子类表 得出结果集,在进行smarty的assign,模板循环2次 。
2.通过程序查询结果集处理:返回结果集,在程序组装成为字符串,直接assign传到模板。
//所有版块@$row_fid = "SELECT * FROM `forum_forum` ORDER BY `displayorder` ASC";$stmt = $pdo->prepare($row_fid);$stmt->execute();$row_forum = $stmt->fetchAll(PDO::FETCH_ASSOC); //主题分类 foreach ($row_forum as $key => $value) { $fid = $value["fid"]; @$sql = "SELECT `typeid`,`name` FROM `forum_topic_type` WHERE `fid` = $fid"; $stmt = $pdo->prepare($sql); $stmt->execute(); $row_forum[$key]['list'] = $stmt->fetchAll(PDO::FETCH_ASSOC); } print_r($row_forum);$smarty -> assign("all_forum",$row_forum);
大哥,谢谢你
就这意思
太感谢了,学到了
果然是逻辑问题
以后看来能解决大部分的二次循环问题了
谢谢

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Als führende Währung im Bereich der künstlichen KI hat die FET-Währung aufgrund ihrer beträchtlichen Kapitalrendite viel Aufmerksamkeit erregt. Die FET-Währung ist nicht nur ein quantitativ teilbarer Token, der von der Fetch.ai-Plattform verwendet wird, sondern auch die intelligenten Verträge der Plattform Orakel. Ein wichtiger Teil von. Mit dem Einsetzen des Bullenmarktes steigt der Preis der FET-Münzen weiter, aber die Anleger sind mit diesem Markttrend immer noch nicht zufrieden. Sie möchten wissen, wie bald die FET-Münzen einen zweiten Anstieg erleben werden. Ich würde auch gerne wissen, wie stark die Analysten des Währungskreises den maximalen Anstieg der FET-Münzen vorhersagen. Den Prognosen der Analysten im Kreis zufolge wird der zweite Anstieg im Jahr 2025 erfolgen, mit einem maximalen Anstieg von 8,15 $. Als nächstes wird Ihnen der Herausgeber im Detail berichten. Wie schnell werden FET-Münzen einen zweiten Anstieg erleben? Den Prognosen der Analysten im Kreis zufolge wird die FET-Währung zum zweiten Mal explodieren.

Wenn der Lambda-Ausdruck aus der Schleife ausbricht, sind spezifische Codebeispiele erforderlich. Bei der Programmierung ist die Schleifenstruktur eine wichtige Syntax, die häufig verwendet wird. Unter bestimmten Umständen möchten wir jedoch möglicherweise aus der gesamten Schleife ausbrechen, wenn eine bestimmte Bedingung im Schleifenkörper erfüllt ist, anstatt nur die aktuelle Schleifeniteration zu beenden. Zu diesem Zeitpunkt können uns die Eigenschaften von Lambda-Ausdrücken dabei helfen, das Ziel zu erreichen, aus der Schleife zu springen. Der Lambda-Ausdruck ist eine Möglichkeit, eine anonyme Funktion zu deklarieren, die intern einfache Funktionslogik definieren kann. Es unterscheidet sich von einer gewöhnlichen Funktionsdeklaration:

Hinweis: In diesem Artikel werden Schleifen und Rekursion aus der Perspektive der Go-Sprache verglichen. Beim Schreiben von Programmen kommt es häufig vor, dass eine Reihe von Daten oder Vorgängen wiederholt verarbeitet werden müssen. Um dies zu erreichen, müssen wir Schleifen oder Rekursion verwenden. Schleifen und Rekursionen sind häufig verwendete Verarbeitungsmethoden, aber in praktischen Anwendungen haben sie jeweils Vor- und Nachteile, sodass bei der Auswahl der zu verwendenden Methode die tatsächliche Situation berücksichtigt werden muss. In diesem Artikel wird eine vergleichende Studie zu Schleifen und Rekursion in der Go-Sprache durchgeführt. 1. Schleifen Eine Schleife ist ein Mechanismus, der einen bestimmten Codeabschnitt wiederholt ausführt. Es gibt drei Haupttypen der Go-Sprache

Ersetzen rekursiver Aufrufe in Java-Funktionen durch Iteration. In Java ist die Rekursion ein leistungsstarkes Werkzeug zur Lösung verschiedener Probleme. In einigen Fällen kann die Verwendung von Iteration jedoch eine bessere Option sein, da sie effizienter und weniger anfällig für Stapelüberläufe ist. Hier sind die Vorteile der Iteration: Effizienter, da nicht für jeden rekursiven Aufruf ein neuer Stapelrahmen erstellt werden muss. Es ist weniger wahrscheinlich, dass Stapelüberläufe auftreten, da die Stapelplatznutzung begrenzt ist. Iterative Methoden als Alternative zu rekursiven Aufrufen: In Java gibt es mehrere Methoden, um rekursive Funktionen in iterative Funktionen umzuwandeln. 1. Verwenden Sie den Stapel. Die Verwendung des Stapels ist die einfachste Möglichkeit, eine rekursive Funktion in eine iterative Funktion umzuwandeln. Der Stapel ist eine Last-In-First-Out-Datenstruktur (LIFO), ähnlich einem Funktionsaufrufstapel. publicintfa

Iterator-Schnittstelle Die Iterator-Schnittstelle ist eine Schnittstelle zum Durchlaufen von Sammlungen. Es bietet mehrere Methoden, darunter hasNext(), next() und remove(). Die Methode hasNext() gibt einen booleschen Wert zurück, der angibt, ob es ein nächstes Element in der Sammlung gibt. Die Methode next() gibt das nächste Element in der Sammlung zurück und entfernt es aus der Sammlung. Die Methode „remove()“ entfernt das aktuelle Element aus der Sammlung. Das folgende Codebeispiel zeigt, wie die Iterator-Schnittstelle zum Durchlaufen einer Sammlung verwendet wird: Listnames=Arrays.asList("John","Mary","Bob");Iterator

In diesem Artikel wird ausführlich erläutert, wie PHP alle Werte eines Arrays zurückgibt, um ein Array zu bilden. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit und hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können . Verwenden der Funktion array_values() Die Funktion array_values() gibt ein Array aller Werte in einem Array zurück. Die Schlüssel des ursprünglichen Arrays bleiben nicht erhalten. $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values werden ["bar","qux"]Verwendet Eine Schleife kann eine Schleife verwenden, um alle Werte des Arrays manuell abzurufen und zu einem neuen hinzuzufügen

Alle Programmiersprachen sind untrennbar mit Schleifen verbunden. Daher beginnen wir standardmäßig mit der Ausführung einer Schleife, wann immer es einen sich wiederholenden Vorgang gibt. Aber wenn wir es mit einer großen Anzahl von Iterationen (Millionen/Milliarden Zeilen) zu tun haben, ist die Verwendung von Schleifen ein Verbrechen. Möglicherweise stecken Sie ein paar Stunden lang fest, nur um später festzustellen, dass es nicht funktioniert. An dieser Stelle wird die Implementierung der Vektorisierung in Python sehr wichtig. Was ist Vektorisierung? Die Vektorisierung ist eine Technik zur Implementierung von (NumPy)-Array-Operationen für Datensätze. Im Hintergrund wird die Operation auf alle Elemente des Arrays oder der Reihe gleichzeitig angewendet (im Gegensatz zu einer „for“-Schleife, die jeweils eine Zeile bearbeitet). Als Nächstes zeigen wir anhand einiger Anwendungsfälle, was Vektorisierung ist. Finden Sie die Summe der Zahlen##Verwenden Sie die Schleife importtimestart

Schleifen und Iterationen: Kernkonzepte in der Programmierung Schleifen und Iterationen sind wesentliche Konzepte in der Programmierung, die es einem Programm ermöglichen, eine Reihe von Anweisungen wiederholt auszuführen. Schleifen werden verwendet, um die Anzahl der Wiederholungen explizit anzugeben, während Iterationen verwendet werden, um über die Elemente in einer Sammlung oder Datenstruktur zu iterieren. Arten von Schleifen Es gibt drei Haupttypen von Schleifen: 1. for-Schleife Eine for-Schleife wird verwendet, um einen Codeblock auszuführen, wenn Sie die Anzahl der Wiederholungen kennen. Seine Syntax lautet wie folgt: for (Initialisierung; Bedingung; Inkrementieren/Dekrementieren) {//Codeblock, der wiederholt ausgeführt werden soll} Die folgende for-Schleife gibt beispielsweise die Zahlen 1 bis 10 aus: for(inti=1;i
