>  기사  >  PHP 프레임워크  >  Thinkphp volist 다중 루프는 배열 키 값을 그대로 출력합니다.

Thinkphp volist 다중 루프는 배열 키 값을 그대로 출력합니다.

藏色散人
藏色散人앞으로
2020-06-05 14:27:003583검색

다음은 thinkphp 프레임워크개발 칼럼에서 Thinkphp volist 다중 루프 출력 배열 키 값을 그대로 사용한 내용을 요약한 내용입니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

Thinkphp volist 다중 루프는 배열 키 값을 그대로 출력합니다.

최근 프로젝트 문제로 volist를 이용하게 되었습니다. 이 과정에서 주로 Volist가 루프에서 여러 데이터를 출력할 때 키를 출력하는 방법과 같은 몇 가지 작은 문제에 직면했습니다. 인터넷에서 많은 정보를 확인했는데 대부분의 정보가 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
                )
        )
)

분명히 이것은 다중 배열입니다. 키 값을 얻으려면 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>

얻은 결과는 다음과 같습니다.

1
a   1   b   2
2
c   3   d   4

여기서 외부 루프의 키 값이 시스템 기본값임이 분명합니다. , 내부 루프가 나옵니다. 키 값은 루프에 의해 제어되지 않고 데이터 자체에 의해 결정됩니다.

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

Thinkphp 매뉴얼에는 이 내용이 매우 명확하게 명시되어 있습니다. 여기에 다른 요구 사항이 없다면 실제로 키 값 출력에 대한 대부분의 요구 사항을 충족할 수 있습니다. 그런데 배열을 다음과 같은 형식으로 변경하면

$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;,
                ]
            ]
        ];

그리고 이때 외부 루프 밖으로 나온 키 값과 내부 루프 밖으로 나온 키 값은 데이터 자체에 의해 결정됩니다. , 루프에 의해 제어되지 않는 경우 이를 처리하는 방법은 무엇입니까? 글쎄요, 그 당시 저는 오해에 빠졌습니다. 저는 항상 두 개의 volist를 사용하여 루프를 만든 다음 키 값(데이터 자체에 의해 결정됨)을 출력하고 싶었지만 오랫동안 시도한 후에 여전히 그렇지 않다는 것을 알았습니다. 작동하지 않습니다. 많은 정보를 확인한 결과 많은 정보에서 이 문제가 언급되지 않은 것으로 나타났습니다. 수많은 뇌 세포를 죽이고 코드를 살펴본 후 갑자기 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>

얻은 결과는 다음과 같습니다.

aaa
a   1   b   2
bbb
c   3   d   4

는 위의 요구 사항을 충족합니다. 요약하면 다음과 같습니다.

thinkphp에서 volist 태그를 사용하여 루프로 여러 배열을 출력할 때 기본 값이 아닌 데이터가 제어하는 ​​키 값을 출력하려면 foreach 태그를 조합하여 사용할 수 있습니다. volist 태그를 사용하여 그대로 출력하면 됩니다.

위 내용은 Thinkphp volist 다중 루프는 배열 키 값을 그대로 출력합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 bbsmax에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제