将索引多维数组转换为关联多维数组 [英] convert indexed multidimensional array to associative multidimensional array

查看:78
本文介绍了将索引多维数组转换为关联多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有嵌套类别的索引数组,如下所示:

I have an indexed array with nested categories like this:

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)并保持嵌套结构?

Is there elegant way to convert it to associative array (where keys are id's) and keep nesting structure?

转换后我除了这样的东西:

After conversion I excepting something like this:

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',
      ),
    ),
  ),
)

推荐答案

你可以试试这个 - 不是最优雅的,但似乎有效:

You could try this - not the most elegant, but seems to work:

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);

这篇关于将索引多维数组转换为关联多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆