繁体   English   中英

如何使用变量变量访问关联数组的特定深度

[英]How can I access a specific depth of an associative array with variable variables

我已经在这个问题上打了一段时间了。 我正在开发一款软件,该软件根据MySQL结果创建一棵树,检查每一行之间的变化,以确定在树中的何处放置新数据。

我现在正处于死胡同,试图理解如何动态地告诉PHP处理数组的不同部分。

我虽然使用变量变量,但似乎无法正常工作。 为了让我的生活更轻松,我尝试建立一个测试文件来测试此行为,这就是结果...

$array = [
    0 => [
        "name" => "test"
    ],
    1 => [
        "name" => "test",
        "data" => [
            "content" => 5
        ]
    ]
];

$ref = 'array["1"]["name"]';

echo $ref."\n";
echo $$ref;

输出量

array["1"]["name"] 
Notice: Undefined variable: array["1"]["name"] in P:\xampp\htdocs\assets\php\test.php on line 23

相反,我期待的是test东西。

我还想提到我已经尝试过${}方法,但是我不影响数组,而是在极少数情况下将数据添加到另一个变量中而不会输出错误。

有人可以帮忙吗? 谢谢!

在再次考虑问题之后,我想出了一种解决方法来达到预期的结果。 我决定将引用make与&$var一起使用。

因此,我决定调整代码以创建要执行的每个步骤的数组,而不是字符串。 示例如下:

// Old method
$ref = 'array["1"]["name"];

// New method
$ref = ["1", "name"];

然后,代码通过循环遍历数组来引用原始数组,但随后逐渐加深...

// Referencing the original array
$referencedArray = &$array;

// Going one step at the time inside the nested array
foreach ($ref as $k => $v) {
   $referencedArray = &$referencedArray[$rav];
}

我相信此解决方案可能适合我的情况,但是如果您有任何建议,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM