【发布时间】:2011-12-30 05:06:21
【问题描述】:
我有这个示例 php 字符串:
$string = "@[item_1][door] @[mozart][grass] = yes @[mozart][green] = no @[mozart][human] @[blue][movie]=yes @[ item_1][beat] = 是 @[item_1][music] = 否 ";
现在 $string 标识为便于查看:
- @[item_1][门]
- @[莫扎特][草] = 是
- @[莫扎特][绿色] = 没有
- @[莫扎特][人类]
- @[蓝色][电影]=是
- @[item_1][beat] = 是
- @[item_1][音乐] = 否
我想知道如何获取此字符串(或其他遵循此样式的字符串)并转换为如下所示的数组:
Array
(
[item_1] => Array
(
[door] => Array
(
[mozart] => Array
(
[grass] => yes
[green] => no
[human] => Array
(
[blue] => Array
(
[movie] => yes
)
)
)
)
[beat] => yes
[music] => no
)
)
我尝试了什么
我尝试使用递归函数来创建一个嵌套数组,但我无法在递归函数中访问数组指针(在深层)..不知道为什么..可能是错误的补丁回答。 谢谢,
【问题讨论】:
-
你可以展示你的递归函数。如果您使用引用,则可能需要保留它们的列表,因为您正在使用这种方法进出子数组。
-
如何从原始字符串逻辑上确定 blue 是 Human 内部的一个数组?如果您不能定义一个相当简单的规则来确定这一点,那么编码将很难或不可能。
-
为什么不坚持使用 XML 或 JSON?
-
您的字符串中的格式不明确。例如,第 1 行缩进,而第 6 行 (@[item_1][beat] = yes) 缩进 1 级。这里没有明确的格式。
-
字符串有一个格式,我现在已经有一个处理它的函数 - gist.github.com/1553533 - 现在的问题是我正在尝试将它转换为 JSON 并详细说明我将在该主题上解释. @马里奥
标签: php arrays parsing multidimensional-array tree