这是我的原始代码:
function generateQuery($type, $language, $options)
{
// Base type
$query = $this->Queryparts->print['filter'];
// Language modifiers
// Additional options
return $query;
}
“print”是一个定义为对象的数组/哈希(带有“(object)”转换)。我希望做这样的事情:
$query = $this->Queryparts->$type['filter'];
使用$ type变量作为对象名称。这可能吗?
答案 0 :(得分:10)
$query = $this->Queryparts->{$type}['filter'];
答案 1 :(得分:9)
您可以使用中间变量:
$name = 'something';
$object->$name;
或者您可以使用大括号:
$a = array('foo' => 'bar');
$object->{$a['foo']}; //equivalent to $object->bar
(顺便说一句,如果你发现自己经常这样做,可能会出现设计问题。)
答案 2 :(得分:2)
当然,你可以,这是一个简单的例子:
$obj = new stdClass();
$obj->Test = new stdClass();
$obj->Test->testing['arr'] = 'test';
$type = 'testing';
print_r($obj);
print_r($obj->Test->{$type});
答案 3 :(得分:0)
您还可以通过键入$$
:
$a = array('car', 'plane');
$varname = 'a';
var_dump($$varname);