百搜论坛欢迎您的加入!
adimg adimg
 
昨日:篇  今日:篇   总帖:篇   会员:
博主最大Lv63   
Thinkphp volist多重循环原样输出数组key值     
下面由thinkphp框架开发栏目给大家介绍Thinkphp volist多重循环原样输出数组key值的使用总结,希望对需要的朋友有所帮助!

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

1

2

3

4

5

6

public function check()

{

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

    $this->assign('list', $multiArr);

    $this->display();

}

打印出来的格式如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

Array

(

    [0] => Array

        (

            [a] => Array

                (

                    [num] => 1

                )

            [b] => Array

                (

                    [num] => 2

                )

        )

    [1] => Array

        (

            [c] => Array

                (

                    [num] => 3

                )

            [d] => Array

                (

                    [num] => 4

                )

        )

)

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

1

2

3

4

5

6

7

8

9

10

11

12

13

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

得到的结果如下:

1

2

3

4

1

a   1   b   2

2

c   3   d   4

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

1

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

$multiArr = [

            'aaa' => [

                'a' => [

                    'num' => '1',

                ],

                'b' => [

                    'num' => '2',

                ]

            ],

            'bbb' => [

                'c' => [

                    'num' => '3',

                ],

                'd' => [

                    'num' => '4',

                ]

            ]

        ];

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

1

2

3

4

5

6

7

8

9

10

11

12

13

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

得到的结果如下:

1

2

3

4

aaa

a   1   b   2

bbb

c   3   d   4

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

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

以上就是Thinkphp volist多重循环原样输出数组key值的详细内容

 0  已被阅读了1163次  楼主 2020-06-23 09:29:41
回复列表

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

联系站长 友链申请桂ICP备19000949号-1     桂ICP备19000949号-1
您的IP:3.135.183.89,2024-05-05 12:20:05,Processed in 0.02559 second(s).
免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。
Powered by HadSky 7.12.9
已有0次打赏
(0) 分享
分享
取消
免责声明
1、本站资源,均来自网络,版权归原作者,所有资源和文章仅限用于学习和研究目的 。
2、不得用于商业或非法用途,否则,一切责任由该用户承担 !
如果觉得本文还不错请点个赞或者打赏点轻币哦~
拒绝伸手党,拿走请回复,尊重楼主,尊重你我他~

侵权删除请致信 E-Mail:207882320@qq.com