具有smarty的二维数组 - 致命错误不能使用类型的对象

时间:2014-11-23 01:48:03

标签: php arrays smarty

我正在开发一个PHP项目,我有多维数组,我试图在smarty中循环遍历数组以显示它。

我在PHP中创建以下代码

if (count($routeFields) > 1)
                {
                    $savedRoutes[$count] = new RouteDetails();

                    $savedRoutes[$count]->destination = $routeFields[DESTINATION];
                    $savedRoutes[$count]->gateway = $routeFields[GATEWAY];
                    $savedRoutes[$count]->genmask = $routeFields[GENMASK];
                    $savedRoutes[$count]->flags = $routeFields[FLAGS];
                    $savedRoutes[$count]->metric = $routeFields[METRIC];
                    $savedRoutes[$count]->ref = $routeFields[REF];
                    $savedRoutes[$count]->use = $routeFields[USEF];
                    $savedRoutes[$count]->iface = $routeFields[IFACE];

                    $count++;
                }
return $savedRoutes;

class RouteDetails
    {
        public $destination;
        public $gateway;
        public $genmask;
        public $flags;
        public $metric;
        public $ref;
        public $use;
        public $iface;
    }

以下是我如何调用我的函数并将其赋予smarty

$smarty = new Smarty();
                    $smarty->setTemplateDir("templates");

                    $routeManagement = new RouteManagement();
                    $result = $routeManagement->getRoutes();

                    $smarty->assign("routes", $result);

                    $smarty->display('routes.tpl');

以下是我的智能模板

<table>
    <tr>
        <td>Destination</td>
        <td>Gateway</td>
        <td>Genmask</td>
        <td>Flags</td>
        <td>Metric</td>
        <td>Ref</td>
        <td>Use</td>
        <td>Iface</td>
    </tr>
    {foreach from=$routes key=key item=item}
        <tr>
            <td>{$item.destination}</td>
        </tr>
    {/foreach}
</table>

我显示以下错误:

  

致命错误:无法使用RouteDetails类型的对象作为数组   /var/www/html/RouteManagement/templates_c/06dfeb8eb18eac12fde3a6f643d7f25678e14aaf.file.routes.tpl.php   第46行

我确定我以前做过这件事,但由于某种原因,我无法弄清楚出了什么问题。

感谢您提供的任何帮助。

以下是$ result

的输出
Array
(
    [0] => RouteDetails Object
        (
            [destination] => 192.168.1.0
            [gateway] => *
            [genmask] => 255.255.255.0
            [flags] => U
            [metric] => 0
            [ref] => 0
            [use] => 0
            [iface] => eth0
        )
)

1 个答案:

答案 0 :(得分:1)

啊,我明白了。 $ item是一个对象,而不是一个数组。 smarty $ item.destination意味着你试图像$ item [&#39; destination&#39;]那样访问它。试试$ item-&gt;目的地