是否可以创建指向数组或嵌套对象的变量变量? 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};
${OBJVarVar} = 'classObj->obj';
// This should return the values of $classObj->obj but it will return null
var_dump(${$OBJVarVar});
我错过了一些明显的东西吗?
解决方法:
数组元素方法:
>从字符串中提取数组名称并将其存储在$arrayName中.
>从字符串中提取数组索引并将其存储在$arrayIndex中.
>正确解析它们而不是整体解析它们.
代码:
$arrayTest = array('value0', 'value1');
$variableArrayElement = 'arrayTest[1]';
$arrayName = substr($variableArrayElement,0,strpos($variableArrayElement,'['));
$arrayIndex = preg_replace('/[^\d\s]/', '',$variableArrayElement);
// This returns the correct 'value1'
echo ${$arrayName}[$arrayIndex];
>通过分隔符( – >)分解包含要访问的类和属性的字符串.
>将这两个变量分配给$class和$property.
>在var_dump()上单独解析它们而不是整体解析它们
代码:
$variableObjectProperty = "classObj->obj";
list($class,$property) = explode("->",$variableObjectProperty);
// This Now return the values of $classObj->obj
var_dump(${$class}->{$property});
有用!