Thinkphp volist 多重循环原样输出数组key值的使用总结【转】

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

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

打印出来的格式以下:html

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>

获得的结果以下:thinkphp

1
a   1   b   2
2
c   3   d   4

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

http://document.thinkphp.cn/manual_3_2.html#volist框架

在Thinkphp手册里面,这个说的很清楚。若是到这里,没其余的要求的话,其实能够知足大多数输出key值的要求了。可是若是数组改为下面的格式:this

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

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

<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>

获得的结果以下:htm

aaa
a   1   b   2
bbb
c   3   d   4

知足了上面的要求。总结以下:get

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

文章来自:https://www.bbsmax.com/A/A2dmgekBJe/

相关文章
相关标签/搜索