Php 访问作为成员变量的数组

Php 访问作为成员变量的数组,php,smarty,Php,Smarty,如何在不引入新变量的情况下访问Smarty模板中的$object->$member.$key 直接{$object->$member.$key}会导致错误(我猜的优先级高于->?) 我想要的东西不涉及引入新变量,因此不是明显的{$temp=$object->$member}{$temp.$key}恐怕没有标准的方法可以做到这一点 使用时: class MyClass { public $myMember = ['key1' => 'val1', 'key2' => 'key2

如何在不引入新变量的情况下访问Smarty模板中的
$object->$member.$key

直接
{$object->$member.$key}
会导致错误(我猜
的优先级高于
->
?)


我想要的东西不涉及引入新变量,因此不是明显的
{$temp=$object->$member}{$temp.$key}

恐怕没有标准的方法可以做到这一点

使用时:

class MyClass {
    public $myMember = ['key1' => 'val1', 'key2' => 'key2'];
}

$smarty = new Smarty();
$smarty->assign('object', new MyClass());
$smarty->assign('member', 'myMember');
$smarty->assign('key', 'key1');
Smarty知道它是一个数组,并显示它的值,但我不知道访问该数组元素的任何方法

但是,您可以做的是创建

注册你的插件目录:

// modifier.get.php
function smarty_modifier_get($array, $index)
{
    return $array[$index];
}
然后可以使用语法:

$smarty->addPluginsDir('myplugins');
当然,如果你需要经常使用的话,你可以改短一些

但我还应该提到另一件事作为回答。我从未使用过这样的赋值来使用对象的属性作为变量或键作为变量

在这种情况下,您也可以简单地分配给Smarty阵列:

{$object->$member|get:$key} 

然后在Smarty中,您可以在不使用复杂语法或修饰符的情况下操作标准数组。所以也许你应该考虑它,但当然是由你决定的。< /P>是<代码> {{$Objult>$MAR}} $ KEY}< /COD>工作吗?不,SMATY对<代码>给出语法错误。< /代码>
{$object->$member|get:$key} 
$obj = new MyClass();
$smarty->assign('array',$obj->myMember);