【发布时间】:2019-05-31 10:35:06
【问题描述】:
我在一个数组中有一个数组键和嵌套级别的列表,例如:
$keys[0] = 'first';
$keys[1] = 'second';
$keys[2] = 'third';
如何将其转换为以下格式的多维数组:
$array['first']['second']['third'] = 'value';
我尝试了几种不同的变体,但都没有成功,并且键会自行覆盖。最简单的方法是计算键的数量并手动覆盖每个场景,但这几乎没有优化并且不会动态增长。
$keyLen = count($keys);
if ($keyLen == 1) {
$array[$keys[0]] = 'value;
} elseif ($keyLen == 2) {
$array[$keys[0]][$keys[1]] = 'value;
} elseif ($keyLen == 3) {
$array[$keys[0]][$keys[1]][$keys[2]] = 'value';
} ...
请注意,值并不重要,它是数组键的嵌套,我无法更改初始数组格式。
【问题讨论】:
-
值是什么?是静态字符串
'value'吗? -
你在哪里有
value?这是数组中的最后一项吗? -
我建议使用递归函数 - 但从最后一项 (key2) 到第一项 (key0)。或者也许只是从最后一项开始的循环就可以了。
-
@Dharman 我在问题的底部说值无关紧要。我能够填充那部分,这是我无法优化的键的排列。
标签: php arrays optimization multidimensional-array