7

重複の可能性:
文字列でPHPクラスプロパティを取得

これは私の元のコードです:

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変数をオブジェクト名として使用します。これは可能ですか?

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 に答える