在发布这个问题之前,我想了很多。这个问题比其他任何问题都更具概念性。从经典数组开始,我想将其动态转换为带有子树的多维度。要清楚,从这里:$array = ['my', 'unique', 'values', 'array', 'and', 'so', 'on', '...'];对此:Array(
['my'] =>
['unique'] =>
['values'] =>
['array'] =>
['and'] =>
['so'] =>
['on']=>
['...'] => [])我所做的唯一尝试是“野蛮地”动态创建字符串并通过eval()命令传递它们。我在这里写代码不是为了个人尊严。我承认这件事已经够糟糕了。内行人会明白...我完全相信有正确的方法可以做到,但当然,如果我在这里,我不知道最好的事物
3 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
从头开始,以头结束:
$length = sizeof($array);
$value = [];
for ($index = $length - 1; $index >= 0; $index--) {
$value = [
"{$array[$index]}" => $value
];
unset($array[$index]);
}
$array[]=$value;
慕丝7291255
TA贡献1859条经验 获得超6个赞
这使用引用来跟踪您当前正在向哪个元素添加数据,因此首先$add是根元素(通过将其设置为&$newArray)。每次添加一个新级别时,它都会将引用移动到这个新项目(使用&$add[$key])并重复该过程......
$array = ['my', 'unique', 'values', 'array', 'and', 'so', 'on', '...'];
$newArray = [];
$add = &$newArray;
foreach ( $array as $key ) {
$add[$key] = [];
$add = &$add[$key];
}
print_r($newArray);
- 3 回答
- 0 关注
- 217 浏览
添加回答
举报
0/150
提交
取消