【发布时间】:2016-09-18 07:00:02
【问题描述】:
我有一个数组:
$array = [
"main;header;up" => "main_header_up value",
"main;header;bottom" => "main_header_bottom value",
"main;bottom" => "main_bottom value",
"main;footer;right;top" => "main_footer_right_top value"
];
我想要得到的是将数组键分解为多维数组,但保留值,结果应该与该数组等效:
$array = [
"main" => [
"header" => [
"up" => "main_header_up value",
"bottom" => "main_header_bottom value"
],
"bottom" => ["main_bottom value"],
"footer" => [
"right" => [
"top" => "main_footer_right_top value
]
]
]
];
我想我应该声明; 的数量不是预先确定的。键/索引中可能没有,也可能有 10 个(或更多)。
有什么优雅的方法可以实现这一点吗?
【问题讨论】:
-
我认为
explode与这里无关。您可以编写自己的函数来解析此类输入。我建议使用嵌套对象(即main->header->up和main->bottom..)等 -
是的,我也会去找对象。我认为一旦完成
json_decode / json_encode,以这种方式处理数组会容易得多。 -
explode是解决方案的一部分,但不是棘手的问题。棘手的是,您必须编写自己的函数来将这些结果数组传输到多维数组/对象中,同时将值保存在正确的位置。 -
@Jeff 确切地说,我可以按照我想要的方式将新数组组织到新数组中,但使用一个空数组作为值。我认为可能有一种优雅的方式来处理我不知道的这种情况。
标签: php arrays multidimensional-array