正規表現で見つかった一致の数に等しい深さで、多次元配列を生成しようとしています。各一致の文字列値となる配列キー。
例えば:
preg_match('/([A-Z])\-?([0-9])\-?([0-9]{1,3})/i', 'A-1-001', $matches);
戻り値:
Array (
[0] => A-1-001
[1] => A
[2] => 1
[3] => 001
)
変換したいもの:
$foo = array(
'A' => array(
'1' => array(
'001' => array('some', 'information')
)
)
);
次のような別の多次元配列とマージできるようにします。
$bar['A']['1']['001'] = array('some', 'other', 'information');
プロセスは、任意の数の一致/ディメンションを処理する必要があります。
以下は私の現在のアプローチです。この試みは私の目標をはるかに下回っているため、概念を理解できていません。
$foo = array();
$j = count($matches);
for ($i = 1; $i < $j; $i++) {
$foo[ $matches[$i - 1] ] = $matches[$i];
}
/*
$foo's structure becomes:
Array (
[A-1-001] => A
[A] => 1
[1] => 001
)
*/
配列キーを交換するだけで、必要な新しい子配列を作成しません。
任意の提案や解決策をいただければ幸いです。ありがとう!