16

使用する代わりに

$object->my_property

こんなことしたい

$object->"my_".$variable
4

2 に答える 2

32

次のように中括弧を使用します。

$object->{'my_' . $variable}
于 2012-08-23T13:10:33.383 に答える
9

これはどう:

$object->{"my_$variable"};

PHPドキュメントのこのセクションが役立つかもしれないと思います。つまり、中括弧内に任意の式を書くことができます。その結果(文字列)は、アドレス指定するプロパティの名前になります。例えば:

$x = new StdClass();
$x->s1 = 'def';

echo $x->{'s' . print("abc\n")};
// prints
// abc
// def

...それでも通常は、この式の結果を一時変数に格納する方がはるかに読みやすくなります(ところで、意味のある名前を付けることができます)。このような:

$x = new StdClass();
$x->s1 = 'def';

$someWeirdPropertyName = 's' . print("abc\n"); // becomes 's1'.
echo $x->$someWeirdPropertyName;

ご覧のとおり、このアプローチでは中括弧は不要であり、プロパティ名を構成するものについて少なくともある程度の説明が読者に提供されます。)。

PSprintは、変数名式の潜在的な複雑さを説明するためだけに使用されます。この種のコードは認証テストで一般的に使用されますが、本番環境でそのようなものを使用することは大きな「ノーノー」です。)。

于 2012-08-23T13:11:50.630 に答える