我有一个数组:
$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
..)等。 - FindOut_Quranjson_decode / json_encode
处理数组将会更容易。 - Revenantexplode
是解决方案的一部分,但并不是最棘手的部分。最棘手的是,您将需要编写自己的函数,将这些结果数组转换为多维数组/对象,并确保值放在正确的位置上。 - Jeff