在PHP中,是否存在从一个不同大小的字符串构建数组的方式或循环?
例如,我想转换
$str1 = "page[1][name]";
$str2 = "content[1][language][2][name]";
str1的预期输出:
$page = array
1:
name
str2的预期输出:
$content = array
1:
language
2:
name
但我需要它与构建数组的功能相同,无论多少[]维度。
我在想这样的事情:
$tmp = explode("[", $str1);
$arr = (array)$tmp[0];
for ($i=0; $i<count($tmp)-1; $i++) {
$arr[$i] = array();
.....
.....
}
但我有点卡在那里,我认为它需要更多的递归函数方法
答案 0 :(得分:4)
您的输入看起来很像查询字符串,如果是,您可以使用parse_str()解析它。
示例:
$str1 = "page[1][name]";
$str2 = "content[1][language][2][name]";
parse_str($str1, $v);
print_r($v);
parse_str($str2, $v);
print_r($v);
输出是您所期望的:
Array
(
[page] => Array
(
[1] => Array
(
[name] =>
)
)
)
Array
(
[content] => Array
(
[1] => Array
(
[language] => Array
(
[2] => Array
(
[name] =>
)
)
)
)
)