整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          框架中視圖引擎中的數(shù)據(jù)循環(huán)

          框架中視圖引擎中的數(shù)據(jù)循環(huán)

          利用視圖引擎的assign方法可以將包括數(shù)組在內(nèi)的數(shù)據(jù)分配到模版處理。在模版中,開發(fā)人員可以使用傳統(tǒng)的下標(biāo)或索引取到數(shù)組內(nèi)的數(shù)據(jù),例如$list["title"]。這種方式只能獲取到單一的數(shù)據(jù),如果一個(gè)數(shù)組集合中存在大量的數(shù)據(jù)(例如數(shù)據(jù)表集),那么就需要使用循環(huán)語(yǔ)句逐條讀取。ThinkPHP默認(rèn)的模版引擎提供了3種數(shù)據(jù)循環(huán)方式,分別為volist、foresch以及for標(biāo)簽。這3對(duì)標(biāo)簽可以混合使用,但它們都有各自的適用對(duì)象,下面分別進(jìn)行介紹。

          1、vilist標(biāo)簽

          volist標(biāo)簽是一對(duì)功能強(qiáng)大,使用方便的數(shù)據(jù)循環(huán)標(biāo)簽,它支持多維數(shù)組或一維數(shù)組的循環(huán)。由于它容易使用,并且語(yǔ)法靈活,所以在ThinkPHP模版中該標(biāo)簽比較常見。volist標(biāo)簽被模版引擎解釋后將轉(zhuǎn)換成foreach()...endforeach語(yǔ)句。一條簡(jiǎn)單的volist標(biāo)簽語(yǔ)句格式如下代碼所示。


          如上代碼所示,數(shù)據(jù)源支持PHP所有數(shù)組(不支持對(duì)象),臨時(shí)變量名稱可以自定義,該變量名決定了在循環(huán)體中可以使用的數(shù)組名稱。為了方便演示,這里將在控制器index動(dòng)作中定義個(gè)多維數(shù)組,如下代碼所示

          上述代碼定義了1個(gè)數(shù)組,并定義了3條數(shù)據(jù)。在index.html中可以使用volist標(biāo)簽將數(shù)組數(shù)據(jù)循環(huán)輸出代碼如下所示

          如上述代碼所示,list為數(shù)組變量,該變量由index動(dòng)作分配。在標(biāo)簽中直接引用變量只需要變量名即可,不需要定界符和”$"符號(hào)。$vo是一個(gè)臨時(shí)變量(由volist標(biāo)簽id值指定),所有等待循環(huán)的數(shù)據(jù)都被存放在該變量中,$vo.user_name表示輸出數(shù)組中的user_name鍵對(duì)應(yīng)值,讀者還可以像傳統(tǒng)的PHP那樣寫成$vo[‘user_name']。

          在實(shí)際應(yīng)用中,一般只需要使用volist標(biāo)簽的name和id屬性即可完成大多數(shù)的數(shù)據(jù)循環(huán)。ThinkPHP為了能夠使volist標(biāo)簽更佳靈活,還提供了另外一些實(shí)用的可選屬性,,這些屬性如下

          ● offset:起始數(shù)據(jù)序列

          ● length:數(shù)據(jù)結(jié)束序列

          ● key:數(shù)據(jù)循環(huán)式的臨時(shí)變量,相當(dāng)于從0開始的索引號(hào),默認(rèn)變量名為i。

          ● mod:對(duì)key值取模

          ● empty:當(dāng)那么數(shù)組為空時(shí)顯示的字符串信息

          offset和length配合使用能夠?qū)崿F(xiàn)簡(jiǎn)單的數(shù)據(jù)分頁(yè)功能,如果數(shù)組信息過多,可以使用offset和length分片輸出,如以下代碼所示

          上述代碼標(biāo)志只循環(huán)索引號(hào)2~5之間的數(shù)據(jù),利用offset和length屬性,可以方便地控制頁(yè)面中的局部數(shù)據(jù)。

          2、foreach標(biāo)簽

          foreach標(biāo)簽是volist標(biāo)簽的簡(jiǎn)化版,使用方式一樣,最終生成的PHP代碼也一樣,唯一不同的就是foreach標(biāo)簽不支持volist中可選屬性(只支持key)。另外,foreach不僅可以循環(huán)PHP數(shù)組,還可以循環(huán)對(duì)象。foreach的臨時(shí)變量使用item代替volist中的id。如下代碼所示

          3、for標(biāo)簽

          for標(biāo)簽也是一種可以實(shí)現(xiàn)數(shù)據(jù)循環(huán)的標(biāo)簽,最終生成的嗲嗎就是PHP中的for語(yǔ)句塊。無(wú)論是簡(jiǎn)潔性、易用性還是程序的運(yùn)行速度都不及volist、foreach標(biāo)簽。但for標(biāo)簽不僅可以循環(huán)數(shù)組,還可以循環(huán)普通的PHP變量、函數(shù)等,常用在局部統(tǒng)計(jì)、更新等場(chǎng)合。for標(biāo)簽格式如下

          一條簡(jiǎn)單的for標(biāo)簽語(yǔ)句只需要開始值和結(jié)束值即可,這些變量值都支持模版或者控制器動(dòng)作中的變量值,如下代碼所示

          在for標(biāo)簽中使用變量與volist、foreach標(biāo)簽不同,在for標(biāo)簽中使用變量必須在變量名稱上加上"$",并且變量不支持“|”函數(shù)引用符號(hào)。for標(biāo)簽可選屬性如下

          ● comparison:start和end的條件,默認(rèn)為lt(小于)。常用的有elt(等于活小于)、eq(等于)。

          ●step:步進(jìn)條數(shù)

          ●name:循環(huán)時(shí)變量名,默認(rèn)為i。

          些天向大家分享了一些ThinkPHP操作數(shù)據(jù)庫(kù)的教程,不過一下子要記住這么多東西不是一件容易的事情,所以大家需要在實(shí)戰(zhàn)中邊開發(fā)邊學(xué)習(xí),才能更輕松的掌握技能。今天,我要向大家分享如何使用ThinkPHP模版標(biāo)簽來(lái)實(shí)現(xiàn)循環(huán)輸出功能。

          圖片來(lái)自網(wǎng)絡(luò)

          ThinkPHP內(nèi)置很多模版標(biāo)簽,今天我只向大家分享循環(huán)輸出標(biāo)簽。以后會(huì)逐漸分享其他常用模板標(biāo)簽的用法。

          ThinkPHP內(nèi)置模版標(biāo)簽

          Foreach

          Foreach標(biāo)簽用來(lái)循環(huán)輸出數(shù)據(jù),通常用于輸出數(shù)據(jù)庫(kù)select查詢結(jié)果,如下所示。

          控制器代碼

          模板代碼

          最終輸出結(jié)果如下:

          輸出結(jié)果

          在foreach標(biāo)簽中,name為控制器賦值的變量名(users),item為循環(huán)內(nèi)的變量名(user)。

          Volist

          Volist標(biāo)簽與Foreach類似,不過它擁有更多用法,最基本用法如下:

          Volist基本用法

          輸出結(jié)果

          可以看到,Volist標(biāo)簽中只是把item換成id,其他完全相同。

          但是如果我們只需要輸出第1-10(注意數(shù)組是從0開始的)條數(shù)據(jù),可以這樣用:

          Volist的offset用法

          輸出結(jié)果

          如果數(shù)據(jù)為空時(shí),我們還可以使用empty屬性來(lái)輸出指定信息:

          Volist的empty用法

          輸出結(jié)果

          由于我們使用Table來(lái)輸出數(shù)據(jù),而empty不支持直接傳入html標(biāo)簽,所以“無(wú)用戶信息”被解析到了table外。我們可以這樣解決:

          控制器賦值empty

          Volist的empty接收變量

          輸出結(jié)果

          For

          for標(biāo)簽的用法很簡(jiǎn)單,如下:

          <for start="開始值" end="結(jié)束值" step="步進(jìn)值" name="循環(huán)變量名" >輸出內(nèi)容</for>

          開始值、結(jié)束值、步進(jìn)值和循環(huán)變量都可以支持變量,開始值和結(jié)束值是必須,其他是可選。name的默認(rèn)值是i,步進(jìn)值的默認(rèn)值是1,舉例如下:

          for標(biāo)簽用法

          輸出結(jié)果

          結(jié)論

          在開發(fā)中,我們需要經(jīng)常用到循環(huán)輸出功能,掌握循環(huán)輸出的用法志在必得。

          如果您覺得小編的教程對(duì)您有所幫助,請(qǐng)點(diǎn)擊關(guān)注支持小編,您的關(guān)注是對(duì)小編最大的鼓勵(lì)。

          P的標(biāo)簽給我一種很復(fù)雜的感覺。可能是別的框架的寫法太簡(jiǎn)潔了吧。

          但是好處也是有的......下面會(huì)說到。其實(shí)也是各有利弊了。也不能說誰(shuí)是絕對(duì)的好。

          最常見的幾個(gè)標(biāo)簽,if,foreach,

          for。foreach以前講過。

          寫法也簡(jiǎn)單,{foreach $ a as $ v} {/ foreach}

          這個(gè)看起來(lái)比較簡(jiǎn)潔。也是最易容的一個(gè)標(biāo)簽。

          也可以用原來(lái)的寫法name='a'item='v'。

          對(duì)比上面的不難看出來(lái)對(duì)應(yīng)的是啥。

          對(duì)于foreach標(biāo)簽,有一個(gè)強(qiáng)化版的標(biāo)簽。叫做ovlist標(biāo)簽。

          格式也略不同{volist name='a'id='v'} {/ volist}

          這樣的功能和foreach一樣。但是可以多很多參數(shù)。offset

          ='

          11'length='20' 在id后面加上上面的參數(shù)就會(huì)多出這樣的功能,取出第11條-20的條數(shù)據(jù)

          參數(shù)MOD是輸出某某某條數(shù)。

          比如輸出偶數(shù)條數(shù)就是MOD='2'

          還有另外一個(gè)作用就是做判斷。如果輸出了多少條數(shù)據(jù),額外輸出某些內(nèi)容。

          {eq name=' mod'value='4'}

          {/ eq}

          如果查詢的 數(shù)據(jù)為空的時(shí)候可以用空來(lái)輸出。

          空='xxx'的不支持直接HTML語(yǔ)法,可以插入變量。提前用分配來(lái)賦值。

          為標(biāo)簽

          開始一直沒看到for標(biāo)簽里的比較是啥意思。也不懂默認(rèn)值it is啥意思。原來(lái)是條件的意思,默認(rèn)值是小于。

          {for start=' 1'end='100'} {對(duì)于}

          這是最簡(jiǎn)單的寫法解析后是

          為($ I=1; $ I <100; $ I +=1)

          。當(dāng)然很多地方需要改,首先的英文我不一定就是小于一定的數(shù)值

          我們添加比較=” xx'來(lái)修改

          。xx根據(jù)比較標(biāo)簽來(lái)改。

          我不想就+1是,也許是+2,那么加上step

          step='2'就好了

          我不喜歡$ i我要用$ n,那么就加上name'n'就好了

          ,如果標(biāo)簽

          如果標(biāo)簽不是直接的,如果()了

          分為三種寫法。

          {if condition='xx'}

          {if(xx)}

          {if xx}

          一套完整的就是

          {if xxx} v1

          {elseif xxx} v2

          {else /} v3

          {/ if}

          大致這樣子。了解這三個(gè)標(biāo)簽剩下的就是自己組合了



          原文地址:http : //blog.itbool.com/home/article/index/article_id/76.html


          主站蜘蛛池模板: 日本免费一区尤物| 蜜桃传媒视频麻豆第一区| 精品成人av一区二区三区| 精品性影院一区二区三区内射| 亚洲AV香蕉一区区二区三区| 国产一区在线观看免费| 亚洲色精品aⅴ一区区三区| 99久久人妻精品免费一区| 日本在线视频一区| 日韩精品一区二区三区中文精品| 日韩人妻无码一区二区三区久久99| 亚洲一区中文字幕在线电影网| 国产精品免费大片一区二区| 亚洲日本久久一区二区va| 日本一区二区不卡视频 | 一区二区在线视频| 精品一区二区三区色花堂| 韩国福利视频一区二区| 精品人妻AV一区二区三区| 久久一区二区三区精品| 国精品无码A区一区二区| 亚洲AV成人精品日韩一区18p| 精品人妻一区二区三区四区 | 日本一区二区三区在线观看视频| 亚洲bt加勒比一区二区| 国产成人精品视频一区二区不卡 | 亚洲日韩精品一区二区三区无码 | 亚洲日韩AV一区二区三区中文| 色窝窝无码一区二区三区| 久久国产精品一区免费下载 | 无码少妇一区二区浪潮av| 国产福利91精品一区二区| 亚洲国产老鸭窝一区二区三区| 奇米精品一区二区三区在线观看| 国产精品 视频一区 二区三区| 波多野结衣AV无码久久一区| 日本夜爽爽一区二区三区| 中文字幕一区二区三区在线播放| 成人午夜视频精品一区| 亚洲视频一区在线播放| 亚洲av无一区二区三区|