백엔드 개발 PHP 튜토리얼 Smarty 템플릿의 foreach 및 foreachelse 사용 코드 예

Smarty 템플릿의 foreach 및 foreachelse 사용 코드 예

Jun 23, 2017 pm 02:46 PM
foreach smarty 주형

PHP템플릿 엔진Smarty 내장 함수 foreach 및 foreachelse의 사용법을 주로 소개하고, foreach 및 foreachelse의 기능과 구체적인 사용 기법을 예제 형식으로 분석합니다. 자세한 내용은 다음과 같습니다.

Smarty에서 템플릿의 경우 foreach를 사용하여 블록을 반복할 수 있습니다. 템플릿에서는 PHP에서 배열을 할당해야 합니다. 이 배열은 다차원 배열일 수 있습니다. Smarty의 {foreach} 태그는 그 중 하나가 템플릿 파일에 사용되고 다른 하나는 PHP 스크립트에 사용된다는 점을 제외하면 PHP의 foreach와 동일합니다. 따라서 구문이 달라집니다. 그러나 모두 동일한 작업을 수행합니다. 즉 배열의 내용을 탐색하는 것입니다. {foreachelse} 태그 반대편에는 {foreachelse} 태그도 있습니다. {foreachelse} 태그의 기능은 다음과 같습니다. 배열이 비어 있으면 태그의 내용이 실행됩니다. {foreach} 및 {/foreach}는 템플릿에서 쌍으로 나타나야 합니다. 여기에는 4개의 매개변수가 있으며 그 중 2개의 매개변수 from 및 item이 필요합니다. 해당 매개변수는 아래 목록을 참조하세요.

Attributes Type 필요합니까 기본값 Description
from string 해당 없음 루프할 배열의 이름
item string Yes n/a 현재 처리 중인 요소의 변수 이름
key 문자열 No n/a

현재 처리 중인 요소의 키 이름

name string No n/a 이름은 루프에 액세스하는 데 사용되는 루프

예제를 사용하여 Smarty에서 {foreach} 및 {foreachelse}의 사용을 보여줍니다.

예제 아이디어: 데이터베이스에서 콘텐츠를 가져와 배열 변수 $_html에 할당하고 이 배열 변수를 템플릿에 할당한 다음 템플릿의 배열

test.sql(사용된 SQL 데이터)

--
-- 表的结构 `user`
--
CREATE TABLE IF NOT EXISTS `user` (
 `id` mediumint(8) unsigned NOT NULL auto_increment,
 `username` varchar(50) NOT NULL,
 `email` varchar(50) NOT NULL,
 `addTime` datetime NOT NULL default '0000-00-00 00:00:00',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
--
-- 转存表中的数据 `user`
--
INSERT INTO `user` (`id`, `username`, `email`, `addTime`) VALUES
(1, '苍井空', 'canjingkong@sina.com.cn', '2011-10-24 00:00:00'),
(2, '樱木花道', 'ymhd@163.com', '2011-10-24 00:00:00'),
(3, '赤木晴子', 'chimiqingzi@yahoo.com,cn', '2011-10-24 00:00:00'),
(4, '流川枫', 'lcfeng@sina.com', '0000-00-00 00:00:00'),
(5, '蜡笔小新', 'labixiaoxin@sina.com', '2011-10-24 00:00:00'),
(6, '金刚葫芦娃', 'jghlw@sina.com', '2011-10-24 00:00:00');
로그인 후 복사

init.inc.php (템플릿 초기화 파일)

<?php
 define(&#39;ROOT_PATH&#39;, dirname(FILE)); //设置网站根目录
 require ROOT_PATH.&#39;/libs/Smarty.class.php&#39;; //加载 Smarty 模板引擎
 $_tpl = new Smarty(); //创建一个实例对象
 $_tpl->template_dir = ROOT_PATH.&#39;/tpl/&#39;; //重新指定模板目录
 $_tpl->compile_dir = ROOT_PATH.&#39;./com/&#39;; //重新指定编译目录
 $_tpl->left_delimiter = &#39;<{&#39;; //重新指定左定界符
 $_tpl->right_delimiter = &#39;}>&#39;; //重新指定右定界符
?>
로그인 후 복사

index.php (메인 파일)

<?php
 require &#39;init.inc.php&#39;; //引入模板初始化文件
 global $_tpl;
 $_mysqli = new mysqli(); //创建一个 mysqli() 对象
 $_mysqli->connect(&#39;localhost&#39;,&#39;root&#39;,&#39;数据库密码&#39;,&#39;数据库名&#39;); //连接数据库,请您自行设置
 $_mysqli->set_charset(&#39;utf8&#39;); //设置编码
 $_result = $_mysqli->query("select username,email,addTime from user order by id asc");
 $_html = array();
 while (!!$_row=$_result->fetch_assoc()) {
  $_html[] = $_row;
 }
 $_tpl->assign(&#39;data&#39;,$_html); //把数组分配到模板中
 $_tpl->display(&#39;index.tpl&#39;); //引入模板
 $_mysqli->close(); //关闭数据库,释放资源
?>
로그인 후 복사

tpl/index.tpl (메인 파일 index.php의 템플릿 파일)

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>foreach,foreachelse</title>
</head>
<body>
 <table align="center" border="1" width="800">
  <{foreach from=$data item="row" name="ls"}> <!-- 这个foreach 循环分配过来的数组有几行数据 -->
   <!-- 在此,我们做几个保留变量 $smarty.foreach 的操作 -->
   <!-- 当数据显示第一条的时候,第一行的表格背景为黄色,使用属性:first -->
   <!-- 当数据显示最后一条的时候,最后一行的表格背景为蓝色,使用属性:last -->
   <!-- 显示下分配过来的数组的总个数,使用属性:total -->
   <{if $smarty.foreach.ls.first}>
   <tr bgcolor="#FFFF00"> <!-- 第一行背景为黄色 -->
   <{elseif $smarty.foreach.ls.last}>
   <tr bgcolor="#0000FF"> <!-- 最后一行背景为蓝色 -->
   <{else}>
   <tr>
   <{/if}>
    <td><{$smarty.foreach.ls.iteration}></td><!-- 注意:这里是保留变量 $smarty.foreach 的使用,iteration:总是从 1 开始,每执行一次增加 1 -->
    <{foreach from=$row item="col" name="lsin"}> <!-- 这个foreach 循环数组内的内容,显示在表格的<td></td>标签里 -->
     <td><{$col}></td>
    <{/foreach}>
   </tr>
  <{foreachelse}> <!-- 如果分配过来的数组中没有数据,那么就执行下面的操作! -->
   <tr>
    <td>对不起!暂时没有数据。</td>
   </tr>
  <{/foreach}>
  <tr>
   <td colspan="4" align="center">分配数组的总记录数为:<{$smarty.foreach.ls.total}>条</td>
  </tr>
 </table>
</body>
</html>
로그인 후 복사

실행 결과:

마지막으로 메인 파일 index.php에 전달된 $_html 배열은 2차원 배열입니다. 예약된 변수 $smarty.foreach의 사용은 {foreach} 태그의 name 속성을 기반으로 합니다. 사용되는 예약된 변수 속성은 first(첫 번째 레코드), last(마지막 레코드), iteration(항상 1부터 시작, 각 실행)입니다. 1) 증가, 합계(루프 실행 횟수를 표시하는 데 사용)

위 내용은 Smarty 템플릿의 foreach 및 foreachelse 사용 코드 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Java ArrayList를 순회할 때 요소를 삭제하기 위해 foreach와 iterator를 사용하는 것의 차이점은 무엇입니까? Java ArrayList를 순회할 때 요소를 삭제하기 위해 foreach와 iterator를 사용하는 것의 차이점은 무엇입니까? Apr 27, 2023 pm 03:40 PM

1. Iterator와 foreach의 차이점은 다형성 차이입니다(foreach의 맨 아래 레이어는 Iterator입니다). Iterator는 인터페이스 유형이므로 컬렉션 유형이나 배열에 관심이 없습니다. for와 foreach 모두 컬렉션 유형을 알아야 합니다. 1. foreach의 최하위 레이어가 Iterator에 의해 작성된 코드라고 말하는 이유: 디컴파일된 코드: 2. foreach와 iterator에서 제거의 차이점을 살펴보세요. Alibaba Java Development Manual, 그러나 1번의 경우에는 오류가 보고되지 않으며, 2번의 경우(java.util.ConcurrentModificationException) 먼저 오류가 보고됩니다.

PHP에서 foreach 루프 수를 결정하는 방법 PHP에서 foreach 루프 수를 결정하는 방법 Jul 10, 2023 pm 02:18 PM

​PHP가 foreach 루프 수를 결정하는 단계: 1. "$fruits" 배열을 만듭니다. 2. 초기 값이 0인 카운터 변수 "$counter"를 만듭니다. 3. "foreach"를 사용하여 루프를 만듭니다. 배열을 통해 루프 본문의 카운터 변수 값을 늘린 다음 각 요소와 해당 인덱스를 출력합니다. 4. "foreach" 루프 외부에 카운터 변수 값을 출력하여 루프가 도달하는 요소를 확인합니다.

PHP 이메일 템플릿: 이메일 콘텐츠를 맞춤화하고 개인화하세요. PHP 이메일 템플릿: 이메일 콘텐츠를 맞춤화하고 개인화하세요. Sep 19, 2023 pm 01:21 PM

PHP 이메일 템플릿: 이메일 콘텐츠 사용자 정의 및 개인화 이메일의 인기와 광범위한 사용으로 인해 기존 이메일 템플릿은 더 이상 개인화되고 사용자 정의된 이메일 콘텐츠에 대한 사람들의 요구를 충족할 수 없습니다. 이제 PHP 프로그래밍 언어를 사용하여 사용자 정의되고 개인화된 이메일 템플릿을 만들 수 있습니다. 이 기사에서는 PHP를 사용하여 이 목표를 달성하는 방법을 보여주고 몇 가지 구체적인 코드 예제를 제공합니다. 1. 이메일 템플릿 만들기 먼저 기본 이메일 템플릿을 만들어야 합니다. 이 템플릿은 HTM일 수 있습니다.

PPT 마스크를 추가하는 방법 PPT 마스크를 추가하는 방법 Mar 20, 2024 pm 12:28 PM

PPT 마스킹에 관해서는 아직 생소하신 분들이 많을 텐데요. 대부분의 사람들은 PPT를 만들 때 잘 이해하지 못하고 그냥 마음에 드는 대로 만들어서 만드는 경우가 많기 때문에 PPT 마스킹이 무엇인지도 모르고 이해하지도 못하는 분들이 많습니다. 이 마스크가 어떤 역할을 하는지는 알지만, 사진을 덜 단조롭게 만들 수 있을지도 모르겠습니다. 배우고 싶은 친구들, PPT 마스크를 좀 덜 단조롭게 만들어 보세요. 그렇다면 PPT 마스크를 추가하는 방법은 무엇입니까? 아래를 읽어주세요. 1. 먼저 PPT를 열고 빈 그림을 선택한 다음 [배경 형식 설정]을 마우스 오른쪽 버튼으로 클릭하고 단색을 선택합니다. 2. [삽입] 클릭, 워드아트 단어 입력 3. [삽입] 클릭, [도형] 클릭

PHP는 키가 뒤집힌 배열을 반환합니다. PHP는 키가 뒤집힌 배열을 반환합니다. Mar 21, 2024 pm 02:10 PM

이 기사에서는 키 값을 뒤집은 후 PHP가 배열을 반환하는 방법을 자세히 설명합니다. 편집자는 이것이 매우 실용적이라고 생각하므로 이 기사를 읽고 뭔가를 얻을 수 있기를 바랍니다. PHP 키 값 뒤집기 배열 키 값 뒤집기는 배열의 키와 값을 교환하여 원래 키를 값으로, 원래 값을 키로 사용하여 새 배열을 생성하는 배열 작업입니다. 구현 방법 PHP에서는 다음 방법을 통해 배열의 키-값 뒤집기를 수행할 수 있습니다. array_flip() 함수: array_flip() 함수는 키-값 뒤집기 작업에 특별히 사용됩니다. 배열을 인수로 받고 키와 값이 교환된 새 배열을 반환합니다. $original_array=[

함수 오버로딩 및 재작성에 대한 C++ 템플릿 전문화의 효과 함수 오버로딩 및 재작성에 대한 C++ 템플릿 전문화의 효과 Apr 20, 2024 am 09:09 AM

C++ 템플릿 전문화는 함수 오버로딩 및 재작성에 영향을 줍니다. 함수 오버로딩: 특수화된 버전은 특정 유형의 다양한 구현을 제공할 수 있으므로 컴파일러가 호출하도록 선택하는 함수에 영향을 줍니다. 함수 재정의: 파생 클래스의 특수 버전은 기본 클래스의 템플릿 함수를 재정의하여 함수를 호출할 때 파생 클래스 개체의 동작에 영향을 줍니다.

C++의 템플릿 메타프로그래밍 FAQ 인터뷰 질문 C++의 템플릿 메타프로그래밍 FAQ 인터뷰 질문 Aug 22, 2023 pm 03:33 PM

C++는 다양한 분야에서 널리 사용되는 프로그래밍 언어이다. 템플릿 메타프로그래밍은 프로그래머가 컴파일 타임에 유형과 값을 변환할 수 있도록 하는 고급 프로그래밍 기술이다. 템플릿 메타프로그래밍은 C++에서 널리 논의되는 주제이므로 이와 관련된 질문은 인터뷰에서 매우 흔합니다. 다음은 C++에서 질문을 받을 수 있는 몇 가지 일반적인 템플릿 메타프로그래밍 인터뷰 질문입니다. 템플릿 메타프로그래밍이란 무엇입니까? 템플릿 메타프로그래밍은 컴파일 타임에 유형과 값을 조작하는 기술입니다. 템플릿과 메타함수를 사용하여 유형과 값을 기반으로 생성합니다.

Vue에서 이미지 템플릿 및 마스크 처리를 구현하는 방법은 무엇입니까? Vue에서 이미지 템플릿 및 마스크 처리를 구현하는 방법은 무엇입니까? Aug 17, 2023 am 08:49 AM

Vue에서 이미지 템플릿 및 마스크 처리를 구현하는 방법은 무엇입니까? Vue에서는 템플릿 효과나 마스크를 추가하는 등 이미지에 대한 특별한 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 Vue를 사용하여 이 두 가지 이미지 처리 효과를 얻는 방법을 소개합니다. 1. 이미지 템플릿 처리 Vue를 사용하여 이미지를 처리할 때 CSS의 필터 속성을 사용하여 템플릿 효과를 얻을 수 있습니다. 필터 속성은 요소에 그래픽 효과를 추가하고 밝기 필터는 그림의 밝기를 변경할 수 있습니다. 우리는 바꿀 수 있다

See all articles