ThinkPHP 的 volist 標籤支援嵌套使用,可輕鬆處理多維陣列輸出。本文通過構建多維食物陣列實例,演示雙層嵌套循環的完整流程。
$food = array(); $food[0]['fruits'][0]['fruits1'] = '蘋果1'; $food[0]['fruits'][0]['fruits2'] = '桔子1'; $food[0]['fruits'][0]['fruits3'] = '香蕉1'; $food[0]['vegetables'] = '白菜1'; $food[1]['fruits'][1]['fruits1'] = '蘋果2'; $food[1]['fruits'][1]['fruits2'] = '桔子2'; $food[1]['fruits'][1]['fruits3'] = '香蕉2'; $food[1]['vegetables'] = '白菜2';
print_r 結構如下:
Array(
[0] => Array(
[fruits] => Array([0] => Array([fruits1]=>蘋果1, [fruits2]=>桔子1, [fruits3]=>香蕉1)),
[vegetables] => 白菜1
),
[1] => Array(
[fruits] => Array([1] => Array([fruits1]=>蘋果2, [fruits2]=>桔子2, [fruits3]=>香蕉2)),
[vegetables] => 白菜2
)
)
$this->assign("food", $food);
$this->display();
<p>食物品種:</p><br />
<volist name="food" id="vo">
<volist name="vo['fruits']" id="f">
<p>水果1:{$f['fruits1']}</p>
<p>水果2:{$f['fruits2']}</p>
<p>水果3:{$f['fruits3']}</p>
</volist>
<p>蔬菜:{$vo['vegetables']}</p><br />
</volist>
關鍵點:內層 name="vo['fruits']" 直接引用外層循環變量的子陣列,不加 $ 符號。
食物品種: 水果1:蘋果1 水果2:桔子1 水果3:香蕉1 蔬菜:白菜1 水果1:蘋果2 水果2:桔子2 水果3:香蕉2 蔬菜:白菜2
同理可推導至三層、四層嵌套,只需逐層對陣列成員再次使用 volist 即可。
更多 ThinkPHP 技術請參考專題:《ThinkPHP 入門教程》、《ThinkPHP 常用方法總結》、《Smarty 模板入門基礎教程》及《PHP 模板技術總結》。