加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

PHP:使用变量作为键设置嵌套数组的值

发布时间:2021-07-06 05:22:37 所属栏目:大数据 来源: https://www.jb51.cc
导读:可以说我有这样的代码: $array = [ 'a'= [ 'b' = [ 'c'='some value', ], ], ]; $array['a']['b']['c'] = 'new value'; 当然这是有效的,但我想要的是使用变量来更新这个’c’键,类似的东西: $keys = '[a][b][c]';$array{$keys} = 'new value'; 但是键正在

可以说我有这样的代码:

    $array = [
        'a'=> [
            'b' => [
                'c'=>'some value',
            ],
        ],
    ];

    $array['a']['b']['c'] = 'new value';

当然这是有效的,但我想要的是使用变量来更新这个’c’键,类似的东西:

$keys = '[a][b][c]';
$array{$keys} = 'new value';

但是键正在作为字符串处理,这就是我得到的:

$array['[a][b][c]'] = 'new value';

所以我想要一些帮助,告诉我在不使用eval()的情况下完成这项工作的正确方法.

顺便说一句,可以有任意数量的数组嵌套,所以这样的东西不是一个好的答案:

$key1 = 'a';
$key2 = 'b';
$key3 = 'c';
$array[$key1][$key2][$key3] = 'new value';

解决方法:

这不是定义密钥的最佳方式,但是:

$array = [];
$keys = '[a][b][c]';
$value = 'HELLO WORLD';

$keys = explode('][', trim($keys, '[]'));
$reference = &$array;
foreach ($keys as $key) {
    if (!array_key_exists($key, $reference)) {
        $reference[$key] = [];
    }
    $reference = &$reference[$key];
}
$reference = $value;
unset($reference);

var_dump($array);

如果你必须在这样的字符串中定义一系列键,那么使用一个可以展开的简单分隔符更简单,而不需要修剪以构建一个单独的键数组,所以更简单的像abc一样比[a] [b] [c]更容易使用

Demo

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读