如何将值列表设置为多维关联数组中的键?
我想价值观,如列表转换:如何将值列表设置为多维关联数组中的键?
$foo = ['a', 'b', 'c'];
到遍历数组键如列表:
$bar['a']['b']['c'] = 123;
如何创建哪些键是基于一个关联数组一组值存储在另一个数组中?
回答:
您可以参考。试试这个代码,live demo
<?php $foo = ['a', 'b', 'c'];
$array = [];
$current = &$array;
foreach($foo as $key) {
@$current = &$current[$key];
}
$current = 123;
print_r($array);
回答:
我会做这样的:
$foo = ['a', 'b', 'c']; $val = '123';
foreach (array_reverse($foo) as $k => $v) {
$bar = [$v => $k ? $bar : $val];
}
我们迭代反向阵列上和第一分配最里面的值,然后建立由内而外的阵列。
回答:
这是另一种选择:创建一个临时可解析字符串(通过提取第一个值,然后将剩余值附加为方括号包装字符串),调用parse_str()
,并将输出变量设置为$bar
。
代码:(Demo)
$foo = ['a', 'b', 'c']; $val=123;
parse_str(array_shift($foo).'['.implode('][',$foo)."]=$val",$bar);
// built string: `a[b][c]=123`
var_export($bar);
输出:
array ( 'a' =>
array (
'b' =>
array (
'c' => '123',
),
),
)
如果第一方法感觉太劈肥胖型,下面的递归方法是一种稳定的方法:
验证码:(Demo)
function nest_assoc($keys,$value){ return [array_shift($keys) => (empty($keys) ? $value : nest_assoc($keys,$value))];
// ^^^^^^^^^^^^^^^^^^--------------------------------------------------------extract leading key value, modify $keys
// check if any keys left-----^^^^^^^^^^^^
// no more keys, use the value---------------^^^^^^
// recurse to write the subarray contents-------------^^^^^^^^^^^^^^^^^^^^^^^^^
}
$foo=['a','b','c'];
$val=123;
var_export(nest_assoc($foo,$val));
// same output
以上是 如何将值列表设置为多维关联数组中的键? 的全部内容, 来源链接: utcz.com/qa/261417.html