gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 00:38:30 25 4
gpt4 key购买 nike

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

有效!

关于php - 指向数组或嵌套对象的变量变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com