2016-09-26 79 views
-1

我有以下的示例数据阵列:获取基于数组值的变量

$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

其唯一的工作,你必须添加分号(;)的例子 - $数据[”一般“] [”登录“] =”身份验证“; – shubham715

+0

[如何动态地改写php ARRAY变量?](http://stackoverflow.com/questions/7850744/how-to-reffer-dynamically-to-a-php-array-variables) – Gectou4

+0

我找到了解决方案> http://stackoverflow.com/questions/9628176/using-a-string-path-to-set-nested-array-data/36042293#36042293 – user3405598

回答

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

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}); 

我强烈建议你重构你的代码。采取一看:

问候,

+0

$ reqvar需要动态 – user3405598