如何访问具有可变变量的关联数组的特定深度

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

提问人:Francesco 提问时间:5/5/2019 更新时间:5/5/2019 访问量:64

问:

一段时间以来,我一直在这个问题上摸索。我正在开发一款软件,该软件从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

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

有人可以帮忙吗?谢谢!

php 多维数组 变量

评论


答:

0赞 Francesco 5/5/2019 #1

在再次思考这个问题之后,我想出了一个解决方法来达到预期的结果。 我决定使用引用 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];
}

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