【问题标题】:Create a hierarchy from an array从数组创建层次结构
【发布时间】:2013-06-07 08:15:44
【问题描述】:

我有一个数组如下。

array(
    0 => array(
        'parent' => 'Bigboss',
        'middle' => 'Technicians',
        'child' => 'Players'
    ),
    1 => array(
        'parent' => 'Company',
        'middle' => 'Manager',
        'child' => 'Employees'
    ),
    2 => array(
        'parent' => 'Bigboss',
        'middle' => 'Manager',
        'child' => 'Workers'
    ),
    3 => array(
        'parent' => 'Company',
        'middle' => 'Techinical Lead',
        'child' => 'Employees'
    ),
    4 => array(
        'parent' => 'Bigboss',
        'middle' => 'Workers',
        'child' => 'Employees'
    )
);

我希望这个数组像层次结构一样

parent
=> middle
    => child
parent
=> middle
    => child

如下所示。

array(
    'Biggboss' => array(
        'Technicians' => array(
            0 => 'Players'
        ),
        'Manager' => array(
            0 => 'Workers'
        ),
        'Workers' => array(
            0 => 'Employees'
        )
    ),
    'Company' => array(
        'Manager' => array(
            0 => 'Employees'
        ),
        'Techinical Lead' => array(
            0 => 'Employees'
        )
    )
);

如果有人能解决,将不胜感激。

【问题讨论】:

  • @hey sanganabasu,请弥撒修复此问题

标签: arrays multidimensional-array hierarchy


【解决方案1】:

我相信这行得通...

$input = array(
    0 => array(
        'parent' => 'Bigboss',
        'middle' => 'Technicians',
        'child' => 'Players'
    ),
    1 => array(
        'parent' => 'Company',
        'middle' => 'Manager',
        'child' => 'Employees'
    ),
    2 => array(
        'parent' => 'Bigboss',
        'middle' => 'Manager',
        'child' => 'Workers'
    ),
    3 => array(
        'parent' => 'Company',
        'middle' => 'Techinical Lead',
        'child' => 'Employees'
    ),
    4 => array(
        'parent' => 'Bigboss',
        'middle' => 'Workers',
        'child' => 'Employees'
    )
);

$output = array();

foreach($input as $key => $value){
    if(!isset($output[$value['parent']])){ 
        $output[$value['parent']] = array();
    }
    $output[$value['parent']][$value['middle']] = array($value['child']);
}

print_r($output);

如果您想在最后一个维度中允许多个值,请更改:

$output[$value['parent']][$value['middle']] = array($value['child']);

$output[$value['parent']][$value['middle']][] = $value['child'];

【讨论】:

    猜你喜欢
    • 2019-03-20
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多