私はすべての次元で一意のキーを持つ動的多次元配列を持っています。 (アレイがすべてのキーが一意であることを示す一例で下に配列のキーは、何することができる。)PHP:多次元配列のキーの正確な位置を見つける
$data = array(
'0' => array(
'0-0' => array(
'0-0-0' => array(
'0-0-0-0' => 'some value',
'0-0-0-1' => 'some value',
),
'0-0-1' => array(
'0-0-1-0' => 'some value',
'0-0-1-1' => 'some value',
'0-0-1-2' => 'some value',
),
'0-0-2' => array(
'0-0-2-0' => 'some value',
'0-0-2-1' => 'some value',
),
'0-0-3' => array(
'0-0-3-0' => 'some value',
),
),
'0-1' => array(
'0-1-0' => array(
'0-1-0-0' => 'some value',
'0-1-0-1' => 'some value',
),
'0-1-1' => array(
'0-1-1-0' => 'some value',
'0-1-1-1' => 'some value',
),
'0-1-2' => array(
'0-1-2-0' => 'some value',
'0-1-2-1' => 'some value',
),
),
),
'1' => 'some value',
'2' => array(
'2-0' => 'some value',
'2-1' => array(
'2-1-0' => 'some value',
),
),
);
深さとサブアレイの数は動的です。すべてのキーは一意ですが、上の例のようなパターンはありません。
この配列内の特定のキーの正確な位置(すべての親を階層的に持つ)を見つける必要があります。例えば; array('2', '2-1', '2-1-0')
get_key_position('1', $data);
を返す必要があります
get_key_position('0-1-2-1', $data);
はarray('0', '0-1', '0-1-2', '0-1-2-1')
get_key_position('2-1-0', $data);
を返す必要がありますarray('1')
レベルごとにキーを保存しないのはなぜですか?たとえば、キー0-1-2-1は '$ array [0] [1] [2] [1]'となります。さらに、あなたのキーはすでに次元レベルを持っているので、これをすべて1つの配列に保存することができます。データを繰り返すことは、何かが改善されるという兆候です。 – sidyll
@sidyllキーは "0-1-2-1"のようにする必要はありません。これは、すべてのキーが一意であることを示す単なる例でした。私はそれを明確にするために質問を編集しました。 –
私は参照してください。申し訳ありませんが、あなたの問題は間違っています。これを確認してください:http://stackoverflow.com/questions/12038137/retrieve-all-parent-keys-of-a-given-child-key-in-array – sidyll