我正在开发一个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
)
)
答案 0 :(得分:1)
啊,我明白了。 $ item是一个对象,而不是一个数组。 smarty $ item.destination意味着你试图像$ item [&#39; destination&#39;]那样访问它。试试$ item-&gt;目的地