根据变量获取数组值

时间:2016-09-26 11:06:20

标签: php arrays

我有以下示例数据数组:

$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']);

但它似乎无法正常工作

我不愿意迭代整个数组,考虑到我知道要打印的值的路径,这没有意义。

谢谢

2 个答案:

答案 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 你应该自己实现