指向数组或嵌套对象的变量
是否可以创建一个指向数组或嵌套对象的变量? php 文档明确指出您不能指向 SuperGlobals,但不清楚(至少对我来说)这是否适用于一般数组。
这是我对数组 var var 的尝试。
// Array Example
$arrayTest = array('value0', 'value1');
${arrayVarTest} = 'arrayTest[1]';
// This returns the correct 'value1'
echo $arrayTest[1];
// This returns null
echo ${$arrayVarTest};
下面是一些简单的代码来展示我所说的对象 var var 的含义。
${OBJVarVar} = 'classObj->obj';
// This should return the values of $classObj->obj but it will return null
var_dump(${$OBJVarVar});
我在这里遗漏了一些明显的东西吗?
Is it possible to create a variable variable pointing to an array or to nested objects? The php docs specifically say you cannot point to SuperGlobals but its unclear (to me at least) if this applies to arrays in general.
Here is my try at the array var var.
// Array Example
$arrayTest = array('value0', 'value1');
${arrayVarTest} = 'arrayTest[1]';
// This returns the correct 'value1'
echo $arrayTest[1];
// This returns null
echo ${$arrayVarTest};
Here is some simple code to show what I mean by object var var.
${OBJVarVar} = 'classObj->obj';
// This should return the values of $classObj->obj but it will return null
var_dump(${$OBJVarVar});
Am I missing something obvious here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
数组元素方法:
$arrayName
中。$arrayIndex
中。代码:
对象属性方法:
$class
和$property
。var_dump()
上单独解析它们而不是整体解析它们代码:
它有效!
Array element approach:
$arrayName
.$arrayIndex
.The code:
Object properties approach:
$class
and$property
.var_dump()
The code:
It works!
使用
= &
通过引用分配:Use
= &
to assign by reference:在
echo $arrayTest[1];
中,变量名称是$arrayTest
,数组索引为1
,而不是$arrayTest[ 1]
。括号是 PHP“关键字”。与方法表示法和->
运算符相同。所以你们需要分开。您想要做的事情听起来更像是评估 PHP 代码 (
eval()
)。但请记住:评估是邪恶的。 ;-)In
echo $arrayTest[1];
the vars name is$arrayTest
with an array index of1
, and not$arrayTest[1]
. The brackets are PHP "keywords". Same with the method notation and the->
operator. So you'll need to split up.What you want to do sounds more like evaluating PHP code (
eval()
). But remember: eval is evil. ;-)不,你不能那样做。您只能使用变量、对象和函数名称来做到这一点。
示例:
替代方案可以通过 eval() 或进行预处理。
也就是说,如果您非常确定输入的内容是什么。
通过预处理:
Nope you can't do that. You can only do that with variable, object and function names.
Example:
Alternatives can be via eval() or by doing pre-processing.
That is if you're very sure of what's going to be the input.
By pre-processing:
对于许多嵌套级别有一种动态方法:
there is a dynamic approach for to many nested levels: