volist 嵌套使用一般的二维数组,可以用 volist 标签直接循环输出。对于多维数组,则需要对其中的数组成员再次使用 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
)
)
在对应模块操作(如Index/display)里将变量赋值给模板,并将模板输出:$this->assign("food",$food);
$this->display();
模板 Tpl/default/Index/display.html :
食物品种:
水果1:{$f['fruits1']}
水果2:{$f['fruits2']}
水果3:{$f['fruits3']}
蔬菜:{$vo['vegetables']}
在模板里面,首先将 $food 变量进行循环输出。由于 $food 数组的成员 fruits 也是一个数组,因此再对 $vo['fruits'] 变量进行循环输出(注意没有 $ 符号)。输出结果如下:
食物品种:
水果1:苹果1
水果2:桔子1
水果3:香蕉1
蔬菜:白菜1
水果1:苹果2
水果2:桔子2
水果3:香蕉2
蔬菜:白菜2
同理推之以此方法可以对更多维的数组进行循环输出。
这只是一种方式,当然你也可以参考我写的另外一篇thinkphp多表查询显示二级菜单。用dump打印出查询结果,参照它的规则。