2016-08-13 156 views
1

我有嵌套类索引数组是这样的:转换索引多维数组关联多维数组

array (
    0 => 
    array (
    'name' => 'Furniture', 
    'id' => 'b3cdd1k', 
    'content' => 
    array (
     0 => 
     array (
     'name' => 'Tables', 
     'id' => 'nw24ga3', 
     'content' => 
     array (
      0 => 
      array (
      'name' => 'Wooden tables', 
      'id' => 'ba5lgaz', 
     ), 
      1 => 
      array (
      'name' => 'Glass tables', 
      'id' => 'rqt91gz', 
     ), 
     ), 
    ), 
    ), 
), 
    1 => 
    array (
    'name' => 'Lamps', 
    'id' => 'vb1a4nf', 
), 
    2 => 
    array (
    'name' => 'Doors', 
    'id' => 'a5l4gal', 
    'content' => 
    array (
     0 => 
     array (
     'name' => 'Entrance doors', 
     'id' => 'qwg30fb', 
    ), 
    ), 
), 
) 

是否有将其转换为关联数组(其中键的id),并保持嵌套结构优雅的方式?

转换后,我以外是这样的:

array (
    'b3cdd1k' => 
    array (
    'name' => 'Furniture', 
    'content' => 
    array (
     'nw24ga3' => 
     array (
     'name' => 'Tables', 
     'content' => 
     array (
      'ba5lgaz' => 
      array (
      'name' => 'Wooden tables', 
     ), 
      'rqt91gz' => 
      array (
      'name' => 'Glass tables', 
     ), 
     ), 
    ), 
    ), 
), 
    'vb1a4nf' => 
    array (
    'name' => 'Lamps', 
), 
    'a5l4gal' => 
    array (
    'name' => 'Doors', 
    'content' => 
    array (
     'qwg30fb' => 
     array (
     'name' => 'Entrance doors', 
    ), 
    ), 
), 
) 
+0

向我们展示如何创建这个数组。我假设它来自数据库查询。这是你应该做的地方 – RiggsFolly

+0

我从外部的API得到它,没有办法以另一种格式接收它 –

回答

1

你可以试试这个 - 不是最优雅,但似乎工作:

function convert(&$a) 
{ 
    $result = Array(); 
    foreach($a as $k=>&$v) 
    { 
    $result[$v['id']]['name'] = $v['name']; 
    if(is_array($v['content'])) $result[$v['id']]['content'] = convert($v['content']); 
    } 
    return $result; 
} 

if(count($array) != 0) $result = convert($array); 
+0

谢谢,我会试试! –