我有一个像这样的方法的对象:$foo->getId()
返回integer
,我有一个像这样的数组:
$array(
1=> array(
"parent_id" => 14
),
2=> array(
"parent_id" => 15
)
);
我需要使用parent_id
作为$foo->getId()
的索引键,以聪明的方式访问子阵列中的$array
,例如:
{$array[$foo->getId()].parent_id}
也试过了:
{$array[$foo->getId()]}
但两者都返回错误:
syntax error: unidentified token
我做得不对?
答案 0 :(得分:7)
您可以尝试:
{$array.$foo->getId().parent_id}
如果这不起作用,我认为你必须事先将ID分配给另一个变量:
{assign var=foo_id value=`$foo->getId()`}{$array.$foo_id.parent_id}
在Smarty 3中,这应该有效:
{$array.{$foo->getId()}.parent_id}
答案 1 :(得分:3)
我刚尝试得到和你一样的错误。有趣的是,代码运行良好。在这里我们选择规格:Smarty 3.0.7 with PHP 5.3.4。
我的模板代码:
<html>
<head>
<title>Smarty</title>
</head>
<body>
Hello, {$array[2]["parent_id"]}<br/>
Hello, {$array[$foo->getId()]["parent_id"]}<br/>
</body>
</html>
php文件:
<?php
class Foo {
public function getId() {
return 2;
}
}
// ... smarty config left out ... $smarty has been assigned successfully
$foo = new Foo();
$array = array(
1 => array("parent_id" => 14),
2 => array("parent_id" => 15)
);
$smarty->assign('array', $array);
$smarty->assign('foo', $foo);
$smarty->display('index.tpl');
?>
输出:
Hello, 15
Hello, 15
答案 2 :(得分:1)
试试这个:
$array[$foo->getId()]["parent_id"]
答案 3 :(得分:1)
我将以这种方式使用变量:
$a=array(
1 => array(
"parent_id" => 14
),
2 => array(
"parent_id" => 15
)
);
然后您可以像这样访问您的数组:
$a[1]["parent_id"]
答案 4 :(得分:0)
首先,不要忘记将两个变量传递给Smarty
$smarty->assign('array', $array);
$smarty->assign('foo', $foo);
并且,在您的Smarty模板中,使用:
{$array[$foo->getId()]["parent_id"]}
答案 5 :(得分:0)
从未使用过smarty,但在PHP中你可以这样做:
<?php
class foo {
public function getId() {
return (int)2;
}
}
$array = array(
1 => array(
"parent_id" => 14
),
2 => array(
"parent_id" => 15
)
);
$foo = new Foo;
echo $array[(int)$foo->getId()]['parent_id'];
//15
我输入为整数(int)$foo->getID()
,因为$array
索引是整数,用括号{}
将它们括在字符串中。
(也许您应该查看Foo::getID()
并查看是否返回字符串)
在聪明的时候,你可以做这样的事情(理论上,因为我无法巧妙地测试它):
{$array[(int)$foo->getId()]['parent_id']}
//Also check if this works, but I suspect it shouldn't (the syntax it's not valid PHP)
{$array.(int)$foo->getId().parent_id}
答案 6 :(得分:0)
试试这个。从php文件中分配对象到smarty变量'foo'
{assign var="val" value=$foo->getId()}
{$arr.$val.parent_id}