栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用字符串访问(可能很大)多维数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用字符串访问(可能很大)多维数组

考虑

$vars
为您的变量,你想获得
one['one-one']
two['two-two']['more']
从(演示):

$vars = function($str) use ($vars){    $c = function($v, $w) {return $w ? $v[$w] : $v;};    return array_reduce(preg_split('~['|']~', $str), $c, $vars);};echo $vars("one['one-one']"); # helloecho $vars("two['two-two']['more']"); # tea-time!

这是乐星串入 密钥 令牌,然后遍历

$vars
在阵列 带键 的值,而
$vars
阵列已变成了功能。


旧资料:

用一个只是eval的函数重载数组:

$vars = array(    'one' => array(        'one-one' => "hello",        'one-two' => "goodbye"    ),    'two' => array(        'two-one' => "foo",        'two-two' => "bar"    ));$vars = function($str) use ($vars){    return eval('return $vars'.$str.';');};echo $vars("['one']['one-two']"); # goodbye

如果您不喜欢eval,请更改实现:

$vars = function($str) use ($vars){    $r = preg_match_all('~['([a-z-]+)']~', $str, $keys);    $var = $vars;    foreach($keys[1] as $key)        $var = $var[$key];    return $var;};echo $vars("['one']['one-two']"); # goodbye


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号