Home  >  Article  >  PHP Framework  >  Thinkphp volist multiple loops output array key values ​​as is

Thinkphp volist multiple loops output array key values ​​as is

藏色散人
藏色散人forward
2020-06-05 14:27:003583browse

The following is a summary of the use of Thinkphp volist multi-loop output array key values ​​as is by the thinkphp framework development column. I hope it will be helpful to friends in need!

Thinkphp volist multiple loops output array key values ​​as is

Recently, I have to use volist due to project reasons. During this process, I encountered some small problems, mainly how to output the key when Volist outputs multiple data in a loop. I checked a lot of information on the Internet, and I was very disappointed that most of the information was just pasting and copying the instructions for the volist tag in the Thinkphp manual. In order to help others, I decided to write this article. (Here, the framework used is Thinkphp3.2, and other related knowledge is PHP arrays). First, post the code in the controller:

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

The printed format is as follows:

Array
(
    [0] => Array
        (
            [a] => Array
                (
                    [num] => 1
                )
            [b] => Array
                (
                    [num] => 2
                )
        )
    [1] => Array
        (
            [c] => Array
                (
                    [num] => 3
                )
            [d] => Array
                (
                    [num] => 4
                )
        )
)

Obviously, this is a multiple array. If you want to get their key values, if you use volist, the code is as follows:

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

The results obtained are as follows:

1
a   1   b   2
2
c   3   d   4

Here, it is obvious that the key value of the outer heavy loop is the system default , and the key value from this heavy loop inside is determined by the data itself rather than controlled by the loop.

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

In the Thinkphp manual, this is stated very clearly. If there are no other requirements here, it can actually meet most of the requirements for outputting key values. But what if the array is changed to the following format:

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

And at this time, the key values ​​​​out of the outer loop and the key values ​​​​out of the inner loop are determined by the data itself, not by the loop, what then? What about processing? Well, I got into a misunderstanding at that time. I always wanted to use two volist to loop and then output the key value (which is determined by the data itself), but after trying for a long time, I found that it still didn't work. I checked a lot of information and found that a lot of it didn't mention this issue. After killing countless brain cells and looking at the code, I suddenly thought that foreach can also perform this kind of loop operation. Why not try to use this tag? Or use these two tags together? Suddenly, it became clear. So, change the front-end code to the following:

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

The results obtained are as follows:

aaa
a   1   b   2
bbb
c   3   d   4

meets the above requirements. The summary is as follows:

In thinkphp, when using the volist tag to output multiple arrays in a loop, if you want to output the key value controlled by the data instead of the default, you can use the foreach tag in combination with the volist tag. The key value can be output as it is.

The above is the detailed content of Thinkphp volist multiple loops output array key values ​​as is. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:bbsmax. If there is any infringement, please contact admin@php.cn delete