Heim  >  Artikel  >  PHP-Framework  >  Thinkphp volist mehrere Schleifen gibt die Array-Schlüsselwerte unverändert aus

Thinkphp volist mehrere Schleifen gibt die Array-Schlüsselwerte unverändert aus

藏色散人
藏色散人nach vorne
2020-06-05 14:27:003583Durchsuche

Das Folgende ist eine Zusammenfassung der Verwendung von Thinkphp-Volist-Multi-Loop-Ausgabearray-Schlüsselwerten, wie sie durch das thinkphp-Framework Entwicklungskolumne verwendet werden. Ich hoffe, dass es für Freunde in Not hilfreich sein wird!

Thinkphp volist mehrere Schleifen gibt die Array-Schlüsselwerte unverändert aus

Seit kurzem muss ich aufgrund von Projekten Volist verwenden. Während dieses Vorgangs bin ich auf einige kleine Probleme gestoßen, vor allem auf die Frage, wie der Schlüssel ausgegeben wird, wenn volist mehrere Daten in einer Schleife ausgibt. Ich habe viele Informationen im Internet überprüft und war sehr enttäuscht, dass die meisten Informationen nur aus dem Einfügen und Kopieren der Anweisungen für das Volist-Tag im Thinkphp-Handbuch bestanden. Um anderen zu helfen, habe ich beschlossen, diesen Artikel zu schreiben. (Hier ist das verwendete Framework Thinkphp3.2, und andere verwandte Kenntnisse sind PHP-Arrays). Posten Sie zunächst den Code im Controller:

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

Das gedruckte Format ist wie folgt:

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

Offensichtlich handelt es sich hierbei um ein Mehrfacharray. Wenn Sie ihre Schlüsselwerte erhalten möchten und volist verwenden, lautet der Code wie folgt:

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

Das Ergebnis lautet wie folgt:

1
a   1   b   2
2
c   3   d   4

Hier ist es offensichtlich, dass der Schlüsselwert von Die äußere Schleife ist der Systemstandard, und der Schlüsselwert dieser schweren Schleife im Inneren wird durch die Daten selbst bestimmt und nicht durch die Schleife gesteuert.

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

Im Thinkphp-Handbuch steht dies sehr deutlich. Wenn hier keine weiteren Anforderungen bestehen, kann es tatsächlich die meisten Anforderungen für die Ausgabe von Schlüsselwerten erfüllen. Was aber, wenn das Array in das folgende Format geändert wird:

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

und zu diesem Zeitpunkt sind die Schlüsselwerte aus der äußeren Schleife und die Schlüsselwerte aus der inneren Schleife wird durch die Daten selbst bestimmt und nicht durch die Schleife gesteuert. Was ist mit der Verarbeitung? Nun, ich hatte damals ein Missverständnis. Ich wollte immer zwei Volisten verwenden, um eine Schleife durchzuführen und dann den Schlüsselwert auszugeben (der durch die Daten selbst bestimmt wird), aber nachdem ich es lange versucht hatte, stellte ich fest, dass dies immer noch der Fall war Funktioniert nicht. Ich habe viele Informationen überprüft und festgestellt, dass dieses Problem in vielen davon nicht erwähnt wurde. Nachdem ich unzählige Gehirnzellen getötet und mir den Code angesehen hatte, dachte ich plötzlich, dass foreach auch diese Art von Schleifenoperation ausführen kann. Warum nicht versuchen, diese Bezeichnung zu verwenden? Oder diese beiden Tags zusammen verwenden? Plötzlich wurde es klar. Ändern Sie also den Front-End-Code wie folgt:

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

und erhalten Sie das folgende Ergebnis:

aaa
a   1   b   2
bbb
c   3   d   4

erfüllt die oben genannten Anforderungen. Die Zusammenfassung lautet wie folgt:

Wenn Sie in thinkphp das volist-Tag zur Ausgabe mehrerer Arrays in einer Schleife verwenden und den durch die Daten gesteuerten Schlüsselwert anstelle des Standardwerts ausgeben möchten, können Sie foreach verwenden Tag in Kombination mit dem volist-Tag Der Schlüsselwert kann so ausgegeben werden, wie er ist.

Das obige ist der detaillierte Inhalt vonThinkphp volist mehrere Schleifen gibt die Array-Schlüsselwerte unverändert aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:bbsmax. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen