Thinkphp volist多重循环原样输出数组key值
2022-11-24 11:02:51
200
{{single.collect_count}}
下面由thinkphp框架开发栏目给大家介绍Thinkphp volist多重循环原样输出数组key值的使用总结,希望对需要的朋友有所帮助!

php入门到就业线上直播课:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用

最近因为项目的缘故,要使用到volist。在这个过程中,遇到了一些小问题,主要就是volist在循环输出多重数据的时候,如何输出key。网上查阅了不少资料,很失望的是,大多资料就是粘贴复制Thinkphp手册上volist标签的说明。为了帮助其他人,故决定写下这篇文章。( 在这里,使用的框架是Thinkphp3.2,其它的相关知识,是php数组)。首先贴出控制器里面代码:

public function check(){$multiArr = [['a' => ['num' => '1',], 'b' => ['num' => '2',]], ['c' => ['num' => '3',], 'd' => ['num' => '4',]]];$this->assign('list', $multiArr);$this->display();}
登录后复制

打印出来的格式如下:

Array([0] => Array([a] => Array([num] => 1)[b] => Array([num] => 2))[1] => Array([c] => Array([num] => 3)[d] => Array([num] => 4)))
登录后复制

很明显,这是一个多重数组。如果想得到他们的key值,如果使用volist,代码如下:

<tr><volist name="list" id="data" key="k"><td>{$k}</td><td><tr><volist name="data" id="vo"><td>{$key}</td><td>{$vo.num}</td></volist></tr></td></volist></tr>
登录后复制

得到的结果如下:

1a 1 b 22c 3 d 4
登录后复制

在这里,很明显,外重的循环的key值是系统默认的,而里面的这一重循环出来的key值是由数据本身决定的而不是由循环控制的。

http://document.thinkphp.cn/manual_3_2.html#volist
登录后复制

在Thinkphp手册里面,这个说的很清楚。如果到这里,没其他的要求的话,其实可以满足大多数输出key值的要求了。但是如果数组改成下面的格式:

$multiArr = ['aaa' => ['a' => ['num' => '1',],'b' => ['num' => '2',]],'bbb' => ['c' => ['num' => '3',],'d' => ['num' => '4',]]];
登录后复制

并且此时,外重循环出的key值和内层循环出的key值均由数据本身决定,而不是循环控制的,那该怎么处理呢?好吧,当时走入误区了,一直想用两个volist进行循环,然后输出key值(它由数据本身决定),但是尝试了好久,发现还是不行。查阅了不少的资料,发现好多都没有讲到这个问题。谋杀了无数脑细胞,看着代码,突然想到,foreach也可以进行这种循环操作,为啥不尝试用这个标签呢?或者把这两个标签结合起来使用呢?顿时,豁然开朗。于是,把前端的代码改成如下:

 <tr><foreach name="list" item="data" key="i"><td>{$i}</td><td><tr><volist name="data" id="vo" key="k"><td>{$key}</td><td>{$vo.num}</td></volist></tr></td></foreach></tr>
登录后复制

得到的结果如下:

aaaa 1 b 2bbbc 3 d 4
登录后复制

满足了上面的要求。总结如下:

在thinkphp中,用volist标签进行多重数组循环输出的时候,若想输出由数据控制的key值,而不是默认的,可以把foreach标签和volist标签结合起来使用,就能原样输出key值了。

以上就是Thinkphp volist多重循环原样输出数组key值的详细内容,更多请关注php中文网其它相关文章!

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}