[英]Create nested array by array of keys
我在通过键数组创建嵌套数组并为最后一个嵌套项分配值时遇到了一些困难。
例如,让$value = 4;
和$keys = ['a', 'b', 'c'];
最后的结果应该是:
[
'a' => [
'b' => [
'c' => 4
]
]
]
我试过递归,但没有成功。 任何帮助将不胜感激。
您不需要递归,只需从右到左执行即可:
$a = $value;
for ($i = count($keys)-1; $i>=0; $i--) {
$a = array($keys[$i] => $a);
}
或者来自@felipsmartins 的更短版本:
$a = $value;
foreach (array_reverse($keys) as $valueAsKey) $a = [$valueAsKey => $a];
你可以试试。
$value = 4;
$keys = ['a', 'b', 'c'];
$a = $value;
$i=count($keys)-1;
foreach($keys as $key){
$a = array($keys[$i] => $a);
$i--;
}
print_r($a);
输出
Array
(
[a] => Array
(
[b] => Array
(
[c] => 4
)
)
)
通过引用在结果数组中获取嵌套项的解决方案:
$value = 4;
$keys = ['a', 'b', 'c'];
$result = [];
$reference = &$result;
foreach($keys as $key) {
if (!array_key_exists($key, $reference)) $reference[$key] = [];
$reference = &$reference[$key];
}
$reference = $value;
print_r($result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.