我有一些具有这种结构的数据数组(xml):
product
name => "some name"
images
image => "1.jpg"
image => "2.jpg"
image => "3.jpg"
description => "lorem ipsum"
categories
category => 3939
category => 685
price => 300
importers
importer => "importer1"
某些行(例如“name”)为字符串或整数,有些则为嵌套项(例如图像)。
我需要将它设置为平面和1级数组,当行有一些嵌套数组时,子项的索引名称应该与父项连接,所以它看起来像这样:
product
name => "some name"
images_image => "1.jpg,2.jpg,3.jpg"
description => "lorem ipsum"
categories_category => "3939,685"
price => 300
importers_importer => "importer1"
可以更深地嵌套数组,因此有时需要连接更多索引(因此需要recursion
这似乎是一个简单的逻辑,但我有更长时间的问题,并且无法弄清楚如何让它工作。
嵌套数组只有'same-type children'。因此,如果其中一个是例如名为
的“图像”即使是一些伪代码对我也有帮助。
答案 0 :(得分:2)
<?php
function array_flatten_recursive($in_array) {
$out_array = array();
foreach ($in_array as $key => $value) {
if( is_array($value) ){
$rec_array = array_flatten_recursive($value);
foreach ($rec_array as $rec_key => $rec_value) {
$out_array["{$key}_{$rec_key}"] = $rec_value;
}
} else {
$out_array[$key] = $value;
}
}
return $out_array;
}
eval.in上的演示