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

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

藏色散人
Release: 2020-06-05 14:27:00
forward
3783 people have browsed it

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();
}
Copy after login

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
                )
        )
)
Copy after login

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>
Copy after login

The results obtained are as follows:

1
a   1   b   2
2
c   3   d   4
Copy after login

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
Copy after login

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;,
                ]
            ]
        ];
Copy after login

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>
Copy after login

The results obtained are as follows:

aaa
a   1   b   2
bbb
c   3   d   4
Copy after login

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!

Related labels:
source:bbsmax
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template