繁体   English   中英

分层数据放入数组

[英]Hierarchical data into array

对于以下问题,我需要一些逻辑,但无法解决。 基本上我有一些数据,例如以下数组

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

尝试过动态变量命名和动态创建多维数组,但两者似乎都没有用。

那不可能

对于$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);
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM