Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
利用視圖引擎的assign方法可以將包括數組在內的數據分配到模版處理。在模版中,開發人員可以使用傳統的下標或索引取到數組內的數據,例如$list["title"]。這種方式只能獲取到單一的數據,如果一個數組集合中存在大量的數據(例如數據表集),那么就需要使用循環語句逐條讀取。ThinkPHP默認的模版引擎提供了3種數據循環方式,分別為volist、foresch以及for標簽。這3對標簽可以混合使用,但它們都有各自的適用對象,下面分別進行介紹。
1、vilist標簽
volist標簽是一對功能強大,使用方便的數據循環標簽,它支持多維數組或一維數組的循環。由于它容易使用,并且語法靈活,所以在ThinkPHP模版中該標簽比較常見。volist標簽被模版引擎解釋后將轉換成foreach()...endforeach語句。一條簡單的volist標簽語句格式如下代碼所示。
如上代碼所示,數據源支持PHP所有數組(不支持對象),臨時變量名稱可以自定義,該變量名決定了在循環體中可以使用的數組名稱。為了方便演示,這里將在控制器index動作中定義個多維數組,如下代碼所示
上述代碼定義了1個數組,并定義了3條數據。在index.html中可以使用volist標簽將數組數據循環輸出代碼如下所示
如上述代碼所示,list為數組變量,該變量由index動作分配。在標簽中直接引用變量只需要變量名即可,不需要定界符和”$"符號。$vo是一個臨時變量(由volist標簽id值指定),所有等待循環的數據都被存放在該變量中,$vo.user_name表示輸出數組中的user_name鍵對應值,讀者還可以像傳統的PHP那樣寫成$vo[‘user_name']。
在實際應用中,一般只需要使用volist標簽的name和id屬性即可完成大多數的數據循環。ThinkPHP為了能夠使volist標簽更佳靈活,還提供了另外一些實用的可選屬性,,這些屬性如下
● offset:起始數據序列
● length:數據結束序列
● key:數據循環式的臨時變量,相當于從0開始的索引號,默認變量名為i。
● mod:對key值取模
● empty:當那么數組為空時顯示的字符串信息
offset和length配合使用能夠實現簡單的數據分頁功能,如果數組信息過多,可以使用offset和length分片輸出,如以下代碼所示
上述代碼標志只循環索引號2~5之間的數據,利用offset和length屬性,可以方便地控制頁面中的局部數據。
2、foreach標簽
foreach標簽是volist標簽的簡化版,使用方式一樣,最終生成的PHP代碼也一樣,唯一不同的就是foreach標簽不支持volist中可選屬性(只支持key)。另外,foreach不僅可以循環PHP數組,還可以循環對象。foreach的臨時變量使用item代替volist中的id。如下代碼所示
3、for標簽
for標簽也是一種可以實現數據循環的標簽,最終生成的嗲嗎就是PHP中的for語句塊。無論是簡潔性、易用性還是程序的運行速度都不及volist、foreach標簽。但for標簽不僅可以循環數組,還可以循環普通的PHP變量、函數等,常用在局部統計、更新等場合。for標簽格式如下
一條簡單的for標簽語句只需要開始值和結束值即可,這些變量值都支持模版或者控制器動作中的變量值,如下代碼所示
在for標簽中使用變量與volist、foreach標簽不同,在for標簽中使用變量必須在變量名稱上加上"$",并且變量不支持“|”函數引用符號。for標簽可選屬性如下
● comparison:start和end的條件,默認為lt(小于)。常用的有elt(等于活小于)、eq(等于)。
●step:步進條數
●name:循環時變量名,默認為i。
些天向大家分享了一些ThinkPHP操作數據庫的教程,不過一下子要記住這么多東西不是一件容易的事情,所以大家需要在實戰中邊開發邊學習,才能更輕松的掌握技能。今天,我要向大家分享如何使用ThinkPHP模版標簽來實現循環輸出功能。
圖片來自網絡
ThinkPHP內置很多模版標簽,今天我只向大家分享循環輸出標簽。以后會逐漸分享其他常用模板標簽的用法。
ThinkPHP內置模版標簽
Foreach標簽用來循環輸出數據,通常用于輸出數據庫select查詢結果,如下所示。
控制器代碼
模板代碼
最終輸出結果如下:
輸出結果
在foreach標簽中,name為控制器賦值的變量名(users),item為循環內的變量名(user)。
Volist標簽與Foreach類似,不過它擁有更多用法,最基本用法如下:
Volist基本用法
輸出結果
可以看到,Volist標簽中只是把item換成id,其他完全相同。
但是如果我們只需要輸出第1-10(注意數組是從0開始的)條數據,可以這樣用:
Volist的offset用法
輸出結果
如果數據為空時,我們還可以使用empty屬性來輸出指定信息:
Volist的empty用法
輸出結果
由于我們使用Table來輸出數據,而empty不支持直接傳入html標簽,所以“無用戶信息”被解析到了table外。我們可以這樣解決:
控制器賦值empty
Volist的empty接收變量
輸出結果
for標簽的用法很簡單,如下:
<for start="開始值" end="結束值" step="步進值" name="循環變量名" >輸出內容</for>
開始值、結束值、步進值和循環變量都可以支持變量,開始值和結束值是必須,其他是可選。name的默認值是i,步進值的默認值是1,舉例如下:
for標簽用法
輸出結果
在開發中,我們需要經常用到循環輸出功能,掌握循環輸出的用法志在必得。
P的標簽給我一種很復雜的感覺。可能是別的框架的寫法太簡潔了吧。
但是好處也是有的......下面會說到。其實也是各有利弊了。也不能說誰是絕對的好。
最常見的幾個標簽,if,foreach,
for。foreach以前講過。
寫法也簡單,{foreach $ a as $ v} {/ foreach}
這個看起來比較簡潔。也是最易容的一個標簽。
也可以用原來的寫法name='a'item='v'。
對比上面的不難看出來對應的是啥。
對于foreach標簽,有一個強化版的標簽。叫做ovlist標簽。
格式也略不同{volist name='a'id='v'} {/ volist}
這樣的功能和foreach一樣。但是可以多很多參數。offset
='
11'length='20' 在id后面加上上面的參數就會多出這樣的功能,取出第11條-20的條數據
參數MOD是輸出某某某條數。
比如輸出偶數條數就是MOD='2'
還有另外一個作用就是做判斷。如果輸出了多少條數據,額外輸出某些內容。
{eq name=' mod'value='4'}
{/ eq}
如果查詢的 數據為空的時候可以用空來輸出。
空='xxx'的不支持直接HTML語法,可以插入變量。提前用分配來賦值。
為標簽
開始一直沒看到for標簽里的比較是啥意思。也不懂默認值it is啥意思。原來是條件的意思,默認值是小于。
{for start=' 1'end='100'} {對于}
這是最簡單的寫法解析后是
為($ I=1; $ I <100; $ I +=1)
。當然很多地方需要改,首先的英文我不一定就是小于一定的數值
我們添加比較=” xx'來修改
。xx根據比較標簽來改。
我不想就+1是,也許是+2,那么加上step
step='2'就好了
我不喜歡$ i我要用$ n,那么就加上name'n'就好了
,如果標簽
如果標簽不是直接的,如果()了
分為三種寫法。
{if condition='xx'}
{if(xx)}
{if xx}
一套完整的就是
{if xxx} v1
{elseif xxx} v2
{else /} v3
{/ if}
大致這樣子。了解這三個標簽剩下的就是自己組合了
原文地址:http : //blog.itbool.com/home/article/index/article_id/76.html
*請認真填寫需求信息,我們會在24小時內與您取得聯系。