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);
大哥,谢谢你
就这意思
太感谢了,学到了
果然是逻辑问题
以后看来能解决大部分的二次循环问题了
谢谢

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











FET 화폐는 AI 인공지능 분야의 대표적인 화폐로서 상당한 투자수익률로 인해 많은 주목을 받아왔습니다. FET 화폐는 Fetch.ai 플랫폼에서 사용하는 정량적 분할형 토큰일 뿐만 아니라 플랫폼의 스마트 계약 및 오라클의 중요한 부분입니다. 강세장이 도래하면서 FET 코인의 가격은 계속해서 상승하고 있지만, 투자자들은 여전히 이러한 시장 추세에 만족하지 못하고 있습니다. 그들은 언제 FET 코인이 두 번째 급등을 경험할 것인지 알고 싶어합니다. 그리고 통화권 분석가들이 FET 코인의 최대 상승폭을 얼마나 예측하는지 알고 싶습니다. 업계 분석가들의 예측에 따르면 두 번째 급등은 2025년에 최대 8.15달러 상승할 것으로 예상됩니다. 다음에는 에디터가 자세히 알려드리겠습니다. FET 코인은 얼마나 빨리 두 번째 급등을 경험하게 될까요? 업계 분석가들의 예측에 따르면 FET 통화는 두 번째로 폭발할 것입니다.

람다 표현식은 루프에서 벗어나기 때문에 특정 코드 예제가 필요합니다. 프로그래밍에서 루프 구조는 자주 사용되는 중요한 구문입니다. 그러나 특정 상황에서는 현재 루프 반복을 종료하는 대신 루프 본문 내에서 특정 조건이 충족될 때 전체 루프를 중단하고 싶을 수도 있습니다. 이때 람다 표현식의 특징은 루프에서 벗어나는 목표를 달성하는 데 도움이 될 수 있습니다. 람다 표현식은 내부적으로 간단한 함수 논리를 정의할 수 있는 익명 함수를 선언하는 방법입니다. 일반적인 함수 선언과는 다릅니다.

참고: 이 기사에서는 Go 언어의 관점에서 루프와 재귀를 비교합니다. 프로그램을 작성할 때 일련의 데이터나 작업을 반복적으로 처리해야 하는 상황에 자주 직면하게 됩니다. 이를 달성하려면 루프나 재귀를 사용해야 합니다. 루프와 재귀는 모두 일반적으로 사용되는 처리 방법이지만 실제 응용에서는 각각 장단점이 있으므로 어떤 방법을 사용할지 선택할 때 실제 상황을 고려해야 합니다. 이 기사에서는 Go 언어의 루프와 재귀에 대한 비교 연구를 수행합니다. 1. 루프 루프는 특정 코드 부분을 반복적으로 실행하는 메커니즘입니다. Go 언어에는 세 가지 주요 유형이 있습니다.

이 기사에서는 PHP가 배열의 모든 값을 반환하여 배열을 형성하는 방법을 자세히 설명합니다. 편집자는 이것이 매우 실용적이라고 생각하므로 이 기사를 읽고 뭔가를 얻을 수 있기를 바랍니다. . array_values() 함수 사용하기 array_values() 함수는 배열에 있는 모든 값의 배열을 반환합니다. 원래 배열의 키는 유지되지 않습니다. $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values는 ["bar","qux"]를 사용하여 루프는 루프를 사용하여 배열의 모든 값을 수동으로 가져오고 새 값에 추가할 수 있습니다.

Iterator 인터페이스 Iterator 인터페이스는 컬렉션을 순회하는 데 사용되는 인터페이스입니다. hasNext(), next() 및 Remove()를 포함한 여러 메소드를 제공합니다. hasNext() 메서드는 컬렉션에 다음 요소가 있는지 여부를 나타내는 부울 값을 반환합니다. next() 메서드는 컬렉션의 다음 요소를 반환하고 컬렉션에서 제거합니다. Remove() 메서드는 컬렉션에서 현재 요소를 제거합니다. 다음 코드 예제에서는 Iterator 인터페이스를 사용하여 컬렉션을 반복하는 방법을 보여줍니다. Listnames=Arrays.asList("John","Mary","Bob");Iterator

Java 함수의 재귀 호출을 반복으로 대체 Java에서 재귀는 다양한 문제를 해결하는 데 사용되는 강력한 도구입니다. 그러나 어떤 경우에는 반복을 사용하는 것이 더 효율적이고 스택 오버플로가 발생할 가능성이 적기 때문에 더 나은 옵션일 수 있습니다. 반복의 장점은 다음과 같습니다. 각 재귀 호출에 대해 새 스택 프레임을 생성할 필요가 없으므로 더 효율적입니다. 스택 공간 사용량이 제한되어 있기 때문에 스택 오버플로가 발생할 가능성이 적습니다. 재귀 호출의 대안인 반복 메소드: Java에는 재귀 함수를 반복 함수로 변환하는 여러 메소드가 있습니다. 1. 스택 사용 스택을 사용하는 것은 재귀 함수를 반복 함수로 변환하는 가장 쉬운 방법입니다. 스택은 함수 호출 스택과 유사한 LIFO(후입선출) 데이터 구조입니다. 공공 인파

모든 프로그래밍 언어는 루프와 분리될 수 없습니다. 따라서 기본적으로 반복 작업이 있을 때마다 루프 실행을 시작합니다. 그러나 많은 수의 반복(수백만/수십억 행)을 처리할 때 루프를 사용하는 것은 범죄입니다. 몇 시간 동안 정체되어 있다가 나중에 그것이 작동하지 않는다는 것을 깨닫게 될 수도 있습니다. Python에서 벡터화를 구현하는 것이 매우 중요합니다. 벡터화란 무엇입니까? 벡터화는 데이터 세트에 대한 (NumPy) 배열 작업을 구현하는 기술입니다. 뒤에서는 한 번에 한 행씩 작업하는 "for" 루프와는 달리 배열이나 계열의 모든 요소에 작업을 한 번에 적용합니다. 다음으로 몇 가지 사용 사례를 사용하여 벡터화가 무엇인지 보여줍니다. 숫자의 합을 구하세요##루프를 사용하세요 importtimestart

PHP 루프 중첩 오류를 처리하고 해당 오류 메시지를 생성하는 방법 개발 중에 배열 탐색 및 데이터베이스 쿼리 결과 처리와 같은 반복 작업을 처리하기 위해 루프 문을 사용하는 경우가 많습니다. 그러나 루프 중첩을 사용할 때 무한 루프 또는 너무 많은 중첩 수준과 같은 오류가 발생할 수 있습니다. 이 문제로 인해 서버 성능이 저하되거나 심지어 충돌할 수도 있습니다. 이러한 오류를 더 잘 처리하고 해당 오류 메시지를 생성하기 위해 이 문서에서는 몇 가지 일반적인 처리 방법을 소개하고 해당 코드 예제를 제공합니다. 1. 카운터를 사용하여
