微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 指向数组或嵌套对象的变量变量

是否可以创建指向数组或嵌套对象的变量变量? 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});    

我错过了一些明显的东西吗?

解决方法:

数组元素方法

>从字符串中提取数组名称并将其存储在$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});    

有用!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐