2016-09-26 110 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