Php 将分层数据放入数组

Php 将分层数据放入数组,php,Php,对于下面的问题,我需要一些逻辑,但我无法理解。基本上我有一些数据,比如下面的数组 array( array('name' => 'Test1', 'hierarchy'=> '1'), array('name' => 'Test2', 'hierarchy'=> '1.1'), array('name' => 'Test3', 'hierarchy'=> '1.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';
尝试了动态变量命名和动态创建多维数组,但两者似乎都不起作用。

这是不可能的

对于
$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);
}
那是不可能的

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

如果不一定需要数组,可以创建一个类并进行扩展;如果只需要数组访问,也可以实现。
从那里,您可以解析数据并返回应用程序所需的值。

如果您不一定需要数组,可以创建一个类并进行扩展,或者如果您只需要数组访问,还可以实现。
从那里,您可以解析数据并返回应用程序所需的值。

您说,“尝试了动态变量命名和动态创建多维数组,但两者似乎都不起作用。”-向我们展示您的代码……您说,“尝试了动态变量命名和动态创建多维数组,但两者似乎都不起作用。“-向我们展示您的代码…这是一个有效的想法,但它需要某种内部排序映射,这样我们就不必每次都搜索正确的值。好的,php中的数组是一个排序的哈希映射,所以这有点多余。这个想法是正确的,但它需要某种排序的映射,这样我们就不必每次都搜索正确的值。php中的数组是一个排序的哈希映射,所以这有点多余。