繁体   English   中英

如何在3D阵列中使用Foreach(智能)?

[英]how to use Foreach (smarty) in 3D Array?

如何在3D阵列中使用foreach( smarty )?

我希望这段代码得到cat_titlecat_id

但我没有得到sub_idsub_title

我得到类别 类别

我在TPL smary中编码

{foreach $catData as $cat}
  <ul class="catName">
      <lable>{$cat.cat_title}</lable>
       {foreach $subData as $sub}
            <li class="subName">{$sub.sub_title}</li>
        {/foreach}
   </ul>
{/foreach}

我阵列3D:

cat_id和cat_title是一项,而sub_id和sub_title是更多项。 多合一阵列

数组数组cat_id [一项], cat_title [一项], sub_id [更多项], sub_title [更多项]))

Array
(
    [1] => Array
        (
            [cat_title] => Cat1 
            [cat_id] => 1
            [sub_id] => Array
                (
                    [0] => 1
                    [1] => 2
                    [2] => 3
                    [3] => 4
                )

            [sub_title] => Array
                (
                    [0] => sub1
                    [1] => sub2
                    [2] => sub3
                    [3] => sub4
                )

        )

    [7] => Array
        (
            [cat_title] => Cat2
            [cat_id] => 7
            [sub_id] => Array
                (
                    [0] => 1
                    [1] => 2
                    [2] => 3
                )

            [sub_title] => Array
                (
                    [0] => sub1
                    [1] => sub2
                    [2] => sub3
                )

        )

    [11] => Array
        (
            [cat_title] => Cat3
            [cat_id] => 11
            [sub_id] => Array
                (
                    [0] => 1
                    [1] => 2

                )

            [sub_title] => Array
                (
                    [0] => sub1
                    [1] => sub2
                )

        )

    [18] => Array
        (
            [cat_title] => Cat4
            [cat_id] => 12
            [sub_id] => Array
                (
                    [0] => 1
                    [1] => 2
                    [2] => 3
                    [3] => 4

                )

            [sub_title] => Array
                (
                    [0] => sub1
                    [1] => sub2
                    [2] => sub3
                    [3] => sub4

                )

        )
)

我找到了答案: PHP Smarty循环多维数组

{foreach from=$catData item=catlist}
<ul class="catName">
    <lable data-catid="{$catlist.cat_id}">{$catlist.cat_title}</lable>
    {foreach from=$catlist.sub_title key=k item=sublist}
    <li class="subName" data-subid="{$catlist.sub_id.$k}">{$sublist}</li>
    {/foreach}
</ul>
{/foreach}

您找到了可行的解决方案,但使用的是Smarty2语法,而不是更新,更清洁的Smarty 3语法。

就您而言,如果您具有:

PHP文件:

$data = Array
(
    1 => Array
    (
        'cat_title' => 'Cat1',
        'cat_id'    => 1,
        'sub_id'    => Array
        (
            0 => 1,
            1 => 2,
            2 => 3,
            3 => 4,
        ),
        'sub_title' => Array
        (
            0 => 'sub1',
            1 => 'sub2',
            2 => 'sub3',
            3 => 'sub4',
        )

    ),
    7 => Array
    (
        'cat_title' => 'Cat2',
        'cat_id'    => 7,
        'sub_id'    => Array
        (
            0 => 1,
            1 => 2,
            2 => 3,
        ),
        'sub_title' => Array
        (
            0 => 'sub1',
            1 => 'sub2',
            2 => 'sub3',
        )

    )
);


$smarty->assign('catData', $data);

Smarty文件:

{foreach $catData as $cat}
    <ul class="catName">
        <label>{$cat.cat_title}</label>
        {foreach $cat['sub_title'] as $sub}
            <li class="subName">{$sub}</li>
        {/foreach}
    </ul>
{/foreach}

输出将是:

<ul class="catName">
    <label>Cat1</label>
                <li class="subName">sub1</li>
                <li class="subName">sub2</li>
                <li class="subName">sub3</li>
                <li class="subName">sub4</li>
        </ul>
<ul class="catName">
    <label>Cat2</label>
                <li class="subName">sub1</li>
                <li class="subName">sub2</li>
                <li class="subName">sub3</li>
        </ul>

如预期的那样。

如果您愿意,甚至可以列出数组的所有元素。

对于相同的PHP文件,您可以使用以下Smarty文件:

{foreach $catData as $cat}
    {foreach $cat as $what => $item}
        <strong>{$what}</strong>:
        {if not $item|is_array}
            {$item}
        {else}
            {foreach $item as $value}
                <li class="subName">{$value}</li>
            {/foreach}
        {/if}
        <br />
    {/foreach}
{/foreach}

现在将获得以下输出:

<strong>cat_title</strong>:
        Cat1
    <br />
<strong>cat_id</strong>:
        1
    <br />
<strong>sub_id</strong>:
                        <li class="subName">1</li>
                <li class="subName">2</li>
                <li class="subName">3</li>
                <li class="subName">4</li>
                <br />
<strong>sub_title</strong>:
                        <li class="subName">sub1</li>
                <li class="subName">sub2</li>
                <li class="subName">sub3</li>
                <li class="subName">sub4</li>
                <br />

<strong>cat_title</strong>:
        Cat2
    <br />
<strong>cat_id</strong>:
        7
    <br />
<strong>sub_id</strong>:
                        <li class="subName">1</li>
                <li class="subName">2</li>
                <li class="subName">3</li>
                <br />
<strong>sub_title</strong>:
                        <li class="subName">sub1</li>
                <li class="subName">sub2</li>
                <li class="subName">sub3</li>
                <br />

您还应该处理HTML输出,因为您不能放入<li>以外的<li> <ul>列表元素,并且在此处使用了未知元素<lable>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM