【发布时间】:2022-01-17 10:28:24
【问题描述】:
我有一个关联数组列表如下:
[
"country" => "AU",
"state" => "VIC",
"suburb" => "Carlton",
"precedence" => ["country", "state", "suburb"]
]
我想要一个新的多维数组,如下所示,其中元素根据第一个数组上的 precedence 键定义的顺序嵌套:
[
"country" => [
"AU" => [
"state" => [
"VIC" => [
"suburb" => "Carlton
]
]
]
]
]
以上只是一个示例,我想要一个适用于任何类型数组的通用解决方案。所有输入数组唯一满足的一个条件是它们将有一个 precedence 元素,表示需要生成输出数组的顺序。
我尝试了一些递归解决方案,但它没有按预期工作,并且出现 PHP 致命错误:允许的内存大小为 1073741824 字节已用尽(看起来它正在无限运行):
function generateArray(&$array)
{
foreach ($array['precedence'] as $key => $property) {
if ($key == sizeof($array['precedence']) - 1) {
return [$property => $array[$property]];
} else {
return generateAssetConfig($array);
}
}
}
【问题讨论】:
-
为什么需要制作这个结构?如果您需要
state原样怎么办,如果它是这种结构,那么您将不知道它是键还是所有嵌套后的最终值。
标签: php arrays multidimensional-array