2

我有一些具有这种结构的数据数组(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"

一些行(例如“名称”)作为字符串或整数,一些作为嵌套项(例如图像)。

我需要将其设置为平面和 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

这似乎是一个简单的逻辑,但我有很长一段时间的问题,无法弄清楚如何使它工作。

嵌套数组具有“仅相同类型的子级”。因此,如果其中之一例如名为“图像”

甚至一些伪代码也会对我有所帮助。

4

1 回答 1

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上的演示

于 2013-06-17T10:42:39.033 回答