有时我们想这样访问数组$a的元素```$varStr = "$a['a']['a_a']";```.今天就做罗列下实现的两大类方法:? 1.使用eval()
<?php
$varStr = "\$vars['a']['a_a']";
$value = eval("return $varStr;");
2.一层层遍历取值
<?php
$vars = function($str) use ($vars)
{
? ? if (!preg_match_all('#\[[\"\'](.+?)[\"\']\]#', $str, $keys)) {
? ? ? ? return null;
? ? }
? ? $var = $vars;
? ? foreach($keys[1] as $key){
? ? ? ? $var = $var[$key];
? ? }
? ? return $var;
};
$vars("['a']['aa']");//用法
#为了简洁,我们可以给他封装成一个函数
function initVar(&$vars)
{
? ? $vars = function($str) use ($vars)
? ? {
? ? ? ? if (!preg_match_all('#\[[\"\'](.+?)[\"\']\]#', $str, $keys)) {
? ? ? ? ? ? return null;
? ? ? ? }
? ? ? ? $var = $vars;
? ? ? ? foreach($keys[1] as $key) {
? ? ? ? ? ? $var = $var[$key];
? ? ? ? }
? ? ? ? return $var;
? ? };
}
//然后这样使用
initVar($vars);
$vars('["a"]["aa"]');
//或者封装成这样
function getValue($vars, $str)
{
? ? if (!preg_match_all('#\[[\"\'](.+?)[\"\']\]#', $str, $keys)) {
? ? ? ? return null;
? ? }
? ? $var = $vars;
? ? foreach ($keys[1] as $key) {
? ? ? ? $var = $var[$key];
? ? }
? ? return $var;
}
//然后这样使用
get($vars, '["a"]["aa"]');
--- from my blog:https://blog.nice100.net/php/164.html
|