将分层数据转换为数组

时间:2012-11-20 22:52:13

标签: php

我需要一些逻辑来解决以下问题,但无法理解它。基本上我有一些数据,如下面的数组

array(
    array('name' => 'Test1',
          'hierarchy'=> '1'),
    array('name' => 'Test2',
          'hierarchy'=> '1.1'),
    array('name' => 'Test3',
          'hierarchy'=> '1.2'),
    array('name' => 'Test4',
          'hierarchy'=> '1.2.1')
)

现在我想以这样的方式输出一个数组

$array[1] = 'Test1';
$array[1][2][1] = 'Test4';

尝试动态变量命名并动态创建多维数组,但两者似乎都不起作用。

2 个答案:

答案 0 :(得分:4)

那是不可能的。

$array[1] = 'Test1'; $array[1]需要是一个字符串,但对于$array[1][2][1] = 'Test4';,它必须是一个数组。

你可以这样做:

$array[1]['text'] = 'Test1';
$array[1][2][1]['text'] = 'Test4';

以下是代码:

$result = array();

foreach ($input as $entry)
{
    $path_components = explode('.', $entry['hierarchy']);

    $pointer =& $result;
    foreach ($path_components as $path_component)
        $pointer =& $pointer[$path_component];

    $pointer['text'] = $entry['name'];

    unset($pointer);
}

答案 1 :(得分:0)

如果你不是绝对需要一个数组,你可以创建一个类并扩展ArrayClass,或者如果你只需要数组访问,你也可以实现ArrayAccess。 从那里,您可以解析数据并返回应用程序所需的值。