我需要一些逻辑来解决以下问题,但无法理解它。基本上我有一些数据,如下面的数组
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';
尝试动态变量命名并动态创建多维数组,但两者似乎都不起作用。
答案 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。 从那里,您可以解析数据并返回应用程序所需的值。