我有以下示例数据数组:
$data = [];
$data["general"]["login"] = "Auth"
$data["general"]["login_failed"]["err1"] = "First error"
以及以下请求var:
$reqvar = "['general']['login']";
我想:
print_r($data{$reqvar});
将翻译为
print_r($data['general']['login']);
但它似乎无法正常工作
我不愿意迭代整个数组,考虑到我知道要打印的值的路径,这没有意义。
谢谢
答案 0 :(得分:1)
首先看看PHP documentation - Arrays:
“方括号和花括号可以互换使用来访问数组元素(例如$ array [42]和$ array {42}在上面的例子中都会做同样的事情。)”
所以我认为你正在尝试这样的事情:
<?php
$data = [];
$data["general"]["login"] = "Auth";
$data["general"]["login_failed"]["err1"] = "First error";
$reqvar1 = 'general';
$reqvar2 = 'login';
print_r($data{$reqvar1}{$reqvar2});
我强烈建议您重构代码。看看:
此致
答案 1 :(得分:-1)
将两个值都转换为点表示法,然后您可以选择项目到数组。例如
$data["general"]["login"] = "Auth";
$data["general"]["login_failed"]["err1"] = "First error";
$data = convertToDotNotaion($data);
// it should looks like
$data["general.login"] = "Auth";
$data["general.login_failed"]["err1"] = "First error";
然后转换你的方式相同。您可以使用下一个代码访问值:
$data[$reqvarConverted}]
这是函数 convertToDotNotaion 你应该自己实现