gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:08:09 26 4
gpt4 key购买 nike

假设我有这种代码:

    $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';

最佳答案

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

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

如果你必须像这样在一个字符串中定义一个键序列,那么只使用一个可以分解的简单分隔符就更简单了,而不需要修剪来构建一个单独的键数组,所以更简单的像a.b.c[a][b][c]

更容易使用

Demo

关于PHP:使用变量作为键设置嵌套数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31357558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com