【发布时间】:2010-12-23 11:54:01
【问题描述】:
我有一个问题要与大家分享。问题是,我想提取名称存储在字符串变量中的复杂对象的值。
如您所知,您可以执行以下操作:
$foo = 'Hello World';
$var = 'foo';
echo var_dump($$var); // Output: string(11) "Hello World"
当你尝试这样做时,问题就来了:
$data = new stdClass();
$data->param["foo"]["bar"] = 'Hello World';
$var = 'data->param["foo"]["bar"]';
echo var_dump($$var); // Output: NULL
我可以想象为什么解析器不能这样做。我能想到的唯一解决方法是将 $var 拆分成更小的块('->'、'['、']'、...)并逐步评估它。
有人知道更优雅的解决方案吗?
非常感谢
【问题讨论】:
-
我认为不可能以这种方式使用 -> 或 [ 之类的元素...
-
“变量变量”只有一个变量变量名。它们不是变量表达式。抱歉,没有更好的解决方法。但是你能详细说明你的用例吗?
标签: php string variables metaprogramming