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]は文字列である必要がありますが、$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 に答える