[英]how to use Foreach (smarty) in 3D Array?
how to use foreach ( smarty ) in 3D Array? 如何在3D阵列中使用foreach( smarty )?
i wish this code to get cat_title and cat_id 我希望这段代码得到cat_title和cat_id
but i dont get sub_id and sub_title 但我没有得到sub_id和sub_title
i get category and subgategory . 我得到类别和子 类别 。
i code in TPL smary : 我在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}
I Array 3D: 我阵列3D:
cat_id and cat_title is one item But sub_id and sub_title is more item. cat_id和cat_title是一项,而sub_id和sub_title是更多项。 All in one Array
多合一阵列
array ( array ( cat_id [one item], cat_title [one item], sub_id [more item], sub_title [more item])) 数组 ( 数组 ( 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
)
)
)
I found the answer: php smarty loop multidimensional array 我找到了答案: 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}
You found solution that works but it uses Smarty2 syntax and not newer and cleaner Smarty 3 syntax. 您找到了可行的解决方案,但使用的是Smarty2语法,而不是更新,更清洁的Smarty 3语法。
In your case if you have: 就您而言,如果您具有:
PHP file: 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 file: 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}
The output will be: 输出将是:
<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>
as expected. 如预期的那样。
If you wanted you could even list over all elements of your arrays. 如果您愿意,甚至可以列出数组的所有元素。
For the same PHP file you could use the following Smarty file: 对于相同的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}
and now will get the following output: 现在将获得以下输出:
<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 />
You should also work on your HTML output because you cannot put in <ul>
list elements other than <li>
and you used here unknown element <lable>
您还应该处理HTML输出,因为您不能放入
<li>
以外的<li>
<ul>
列表元素,并且在此处使用了未知元素<lable>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.