2

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

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

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

4

2 回答 2

4

那是不可能的。

for$array[1] = 'Test1'; $array[1]需要是一个字符串,但 for$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);
}
于 2012-11-20T23:08:04.677 回答
0

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

于 2012-11-20T23:16:17.310 回答