如何使用smarty循环两个数组?

时间:2013-07-25 04:42:49

标签: php smarty

我试图制作一个基于smarty的简单论坛脚本。

在首页,我希望能够显示每个类别,以及链接到这些类别的论坛。

为此,我的数据库中有两个表,"论坛"和" forums_categories"。

Forums table:
+----+---------+-------------+
| id | value   | category_id |
+----+---------+-------------+
|  1 | Forum 1 | 1           |
|  2 | Forum 2 | 2           |
|  3 | Forum 3 | 1           |
|  4 | Forum 4 | 2           |
+----+---------+-------------+

forum_categories table:
+----+------------+
| id | value      |
+----+------------+
|  1 | Category 1 |
|  2 | Category 2 |
+----+------------+

这是我的PHP代码

    $sql = "SELECT * FROM `forums_categories` ORDER BY `id` ASC";
    $result = mysql_query($sql);
    if (mysql_num_rows($result) > 0)
    {
        $category = array();
        while ($row = mysql_fetch_assoc($result))
        {
            $cat_id = $row['id'];
            $category[] = $row;

            # Get forums
            $sql2 = "SELECT * FROM `forums` WHERE category_id='$cat_id'";
            $result2 = mysql_query($sql2);

            $forums = array();
            while ($row2 = mysql_fetch_assoc($result2))
            { 
                $forums[] = $row2;
            }

        }
    }

    $smarty->assign('category', $category);
    $smarty->assign('forums', $forums);

这就是我在forum.tpl文件中的内容。

        {section name=i loop=$category}
        <li>{$category[i].id} - {$category[i].value}</li>

        {section name=o loop=$forums}
            <li>{$forums[o].category_id} - {$forums[o].value}</li>
        {/section}

        {/section}

我想得到这个:

1 - 类别1 1 - 论坛1 1 - 论坛3

2 - 类别2 2 - 论坛2 2 - 论坛4

但我得到了这个:

1 - 类别1 2 - 论坛2 2 - 论坛4

2 - 类别2 2 - 论坛2 2 - 论坛4

(注意第1类我是如何使用category_id 2而不是1来获取论坛的)

我的代码出了什么问题?如果有人能帮助我指出正确的方向,我将非常感激。

1 个答案:

答案 0 :(得分:0)

$forums = array();

在下一个代码之前。

while ($row = mysql_fetch_assoc($result))

并且必须更改论坛部分

{section name=o loop=$forums}
  {if $forums[o].category_id==$category[i].id}
    <li>{$forums[o].category_id} - {$forums[o].value}</li>
  {/if}
{/section}

但未经过测试。