thinkphp中volist的多重迴圈,標籤巢狀
關於volist,thinkphp官方手冊說的非常清楚,其實就相當於foreach功能,只是用在模板裡面,很方便,實用。
volist的二重迴圈,標籤巢狀是這樣的。
在操作裡寫如下程式碼:假定有如下陣列
$listArray=array(0=>array('order_id'=>'1','product_item'=>array(0=>array('name'=>'a','price'=>'222'),1=>array('name'=>'b','price'=>'500'))),
1=>array('order_id'=>'2','product_item'=>array(0=>array('name'=>'c','price'=>'566'),1=>array('name'=>'d','price'=>'6666'))));
在對應的模板裡我們用volist
<volist name="listArray" id="vo">
{$vo.order_id}<br>
<volist name="vo.product_item" id="item">
{$item.name}{$item.price}
</volist>
</volist>
得出想要的結果。
手冊裡這樣解釋,還是很全面的。
Volist標籤主要用於在模板中迴圈輸出資料集或者多維陣列。
volist標籤(迴圈輸出資料) |
|
閉合 |
非閉合標籤 |
屬性 |
name(必須):要輸出的資料模板變數 id(必須):迴圈變數 offset(可選):要輸出資料的offset length(可選):輸出資料的長度 key(可選):迴圈的key變數,預設值為i mod(可選):對key值取模,預設為2 empty(可選):如果資料為空顯示的字串 |
通常模型的select方法返回的結果是一個二維陣列,可以直接使用volist標籤進行輸出。
在Action中首先對模版賦值:
$User = M('User');
$list = $User->select();
$this->assign('list',$list);
在模版定義如下,迴圈輸出使用者的編號和姓名:
<volist name="list"id="vo">
{$vo.id}
{$vo.name}
</volist>
Volist標籤的name屬性表示模板賦值的變數名稱,因此不可隨意在模板檔案中改變。id表示當前的迴圈變數,可以隨意指定,但確保不要和name屬性衝突,例如:
<volist name="list"id="data">
{$data.id}
{$data.name}
</volist>
支援輸出部分資料,例如輸出其中的第5~15條記錄
<volist name="list"id="vo" offset="5" length='10'>
{$vo.name}
</volist>
輸出偶數記錄
<volist name="list"id="vo" mod="2" >
<eq name="mod"value="1">{$vo.name}</eq>
</volist>
Mod屬性還用於控制一定記錄的換行,例如:
<volist name="list"id="vo" mod="5" >
{$vo.name}
<eq name="mod"value="4"><br/></eq>
</volist>
輸出迴圈變數
<volist name="list"id="vo" key="k" >
{$k}.{$vo.name}
</volist>
如果沒有指定key屬性的話,預設使用迴圈變數i,例如:
<volist name="list"id="vo" >
{$i}.{$vo.name}
</volist>
如果要輸出陣列的索引,可以直接使用key變數,和迴圈變數不同的是,這個key是由資料本身決定,而不是迴圈控制的,例如:
<volist name="list"id="vo" >
{$key}.{$vo.name}
</volist>
volist還有一個別名iterate,用法和volist是一樣。
從2.1版開始允許使用函式設定資料集,如:
<volist name=":fun('arg')" id="vo">{$vo.name}</volist>
相關文章
- html中p標籤內為何不能巢狀div標籤?HTML巢狀
- python怎麼迴圈巢狀Python巢狀
- 迴圈中巢狀非同步操作的流程控制巢狀非同步
- Python的if else 巢狀 和forin while 迴圈Python巢狀While
- java中如何將巢狀迴圈效能提高500倍Java巢狀
- MySQL Join原理分析(緩衝塊巢狀與索引巢狀迴圈)MySql巢狀索引
- 跳出多重for迴圈
- python 利用 for ... else 跳出雙層巢狀迴圈Python巢狀
- 最佳化兩個簡單的巢狀迴圈巢狀
- while + else 使用,while死迴圈與while的巢狀,for迴圈基本使用,range關鍵字,for的迴圈補充(break、continue、else) ,for迴圈的巢狀,基本資料型別及內建方法While巢狀資料型別
- Python中如何避免字典和元組的多重巢狀的方法Python巢狀
- python基礎語法迴圈巢狀和列表(一)Python巢狀
- python基礎語法迴圈巢狀和列表(二)Python巢狀
- MyBatis中批量插入資料,多重forEach迴圈MyBatis
- 巢狀類遞迴巢狀遞迴
- 高效遍歷匹配Json資料,避免巢狀迴圈[轉]JSON巢狀
- 標籤列印軟體中如何迴圈列印點陣圖圖片
- 碎片化學習Java(二十)Java for迴圈巢狀輸出指定圖案Java巢狀
- [work] python巢狀字典的遞迴遍歷Python巢狀遞迴
- HTML網頁基本標籤的塊級、行級元素,特殊字元的巢狀規則HTML網頁字元巢狀
- Vue中的巢狀路由Vue巢狀路由
- 【廖雪峰python入門筆記】多重迴圈Python筆記
- thinkphp where in order 按照順序in的迴圈排序PHP排序
- 記錄一次 postgresql 最佳化案例( 巢狀迴圈改HASH JOIN )SQL巢狀
- 易優Channelartlist 當前頻道+迴圈-Eyoucms標籤手冊
- 迴圈中的非同步&&迴圈中的閉包非同步
- html的開始與結束標籤巢狀錯誤會導致哪些問題?HTML巢狀
- MyBatis從入門到精通(十二):使用collection標籤實現巢狀查詢MyBatis巢狀
- MyBatis從入門到精通(十):使用association標籤實現巢狀查詢MyBatis巢狀
- 【TUNE_ORACLE】列出返回行數較多的巢狀迴圈(NESTED LOOPS)SQL的SQL參考Oracle巢狀OOPSQL
- JavaScript中if巢狀assert的方法JavaScript巢狀
- 將if-else之類巢狀迴圈重構為函式式管道 - XP123巢狀函式
- Linux的中斷可以巢狀嗎?Linux巢狀
- 狀態模式中迴圈呼叫子元件時遇到的問題模式元件
- repeater中巢狀放入RadioButtonList巢狀
- 1kb的前端HTML模板解析引擎,不限於巢狀、迴圈、函式你能想到的解析方式前端HTML巢狀函式
- 微課sql最佳化(14)、表的連線方法(3)-關於Nested Loops Join(巢狀迴圈)SQLOOP巢狀
- Go 1.22 中的 For 迴圈Go
- JavaScript中的while迴圈JavaScriptWhile