【发布时间】:2014-10-14 14:27:42
【问题描述】:
我有一个如下数组:
数组
(
[1g27] => 数组
(
[42] => AAAAA
[52] => BBBBB
[4] => 2g4
)
[2g4] => 数组
(
[9] => 中交
[14] => 3g14
[15] => 3g15
[20] => DDDDD
[34] => EEEEE
)
[3g14] => 数组
(
[49] => FFFFF
)
[3g15] => 数组
(
[50] => GGGGG
)
)
我希望它变成如下的数组:
数组
(
[1g27] => 数组
(
[42] => AAAAA
[52] => BBBBB
[2g4] => 数组
(
[9] => 中交
[3g14] => 数组
(
[49] => FFFFF
)
[3g15] => 数组
(
[50] => GGGGG
)
[20] => DDDDD
[34] => EEEEE
)
)
请注意,原始数组的值也是原始数组中的键。当值和数组匹配时,我希望数组替换该值(并重命名该值的键)。
我尝试过 foreach 和 array_walk_recursive,但我想不通。 (请参阅以下仅深入 1 级的尝试。)
函数膨胀($flatree,$array) { 全球$inflatedtree; foreach ($array as $arraykey => $arrayvalue) { $inflatedtree[$arraykey] = $arrayvalue; if (array_key_exists($arrayvalue, $flatree)) { $inflatedtree[$arrayvalue] = $flatree[$arrayvalue]; 膨胀($flatree,$inflatedtree[$arrayvalue]); } } } 膨胀($flatree,$flatree['1g27']);然而,使用这个函数给了我这个:
数组
(
[42] => AAAAA
[52] => BBBBB
[2g4] => 数组
(
[9] => 中交
[14] => 3g14
[15] => 3g15
[20] => DDDDD
[34] => EEEEE
)
[3g14] => 数组
(
[49] => FFFFF
)
[3g15] => 数组
(
[50] => GGGGG
)
)
【问题讨论】:
-
向我们展示您迄今为止的尝试
-
我刚刚在上面加了,@iswinky
-
@James,我的问题是:我怎样才能将一个 2 层深的数组变成一个 n 层深的数组?我只是想知道这是否可以做到以及如何做到。
-
它可以做到,只要它是一个正当的理由(即通常最好在源头上将其设置为 3 级深度 - 当它被创建时)。你如何做取决于你想成为一个新的子数组的当前键和值对 - 即你的例子,当你创建新的子级别数组时,它是否总是
2g4你从(等)拆分?另外,您希望这样做的原因是什么?我不知道你的问题,我可能是错的,但看起来你过于复杂了。即我不明白为什么2g4需要是1g27的数组,而不是它自己的顶级数组。 -
@James,我同意人们不妨一开始就以这种方式创建数组。这更像是一个概念性的东西,我正在尝试扩展我的想法。
标签: php arrays multidimensional-array