您的位置 首页 技术

Thinkphp volist多重循环原样输出数组key值

下面由thinkphp框架开发栏目给大家介绍Thinkphp volist多重循环原样输出数组key值的使用总结,希望对需要的朋友有所帮助! 最近因为项目的缘故,要使用到volis…

下面由thinkphp框架开发栏目给大家介绍Thinkphp volist多重循环原样输出数组key值的使用总结,希望对需要的朋友有所帮助!

最近因为项目的缘故,要使用到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值的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/69556.html

为您推荐

返回顶部