7

可能重复:
通过字符串获取 PHP 类属性

这是我的原始代码:

function generateQuery($type, $language, $options)
{
    // Base type
    $query = $this->Queryparts->print['filter'];

    // Language modifiers
    // Additional options

    return $query;
}

“打印”是定义为对象的数组/散列(使用“(对象)”转换)。我想做这样的事情:

    $query = $this->Queryparts->$type['filter'];

使用 $type 变量作为对象名称。这可能吗?

4

4 回答 4

12

您可以使用中间变量:

$name = 'something';
$object->$name;

或者你可以使用大括号:

$a = array('foo' => 'bar');
$object->{$a['foo']}; //equivalent to $object->bar

(顺便说一句,如果您发现自己经常这样做,则可能存在设计问题。)

于 2012-11-23T09:35:37.240 回答
12
$query = $this->Queryparts->{$type}['filter'];
于 2012-11-23T09:36:46.997 回答
2

当然可以,这是一个简单的例子:

$obj = new stdClass();
$obj->Test = new stdClass();
$obj->Test->testing['arr'] = 'test';

$type = 'testing';
print_r($obj);
print_r($obj->Test->{$type});
于 2012-11-23T09:39:22.710 回答
0

您还可以通过键入以下内容来使用变量变量名称$$

$a = array('car', 'plane');
$varname = 'a';
var_dump($$varname);
于 2012-11-23T09:38:57.613 回答