Я пытаюсь создать многомерный массив с глубиной, равной количеству совпадений, найденных в регулярном выражении. Ключи массива должны быть строковым значением для каждого совпадения.Динамически создавать многомерный массив
Например:
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
)
*/
Это только замена ключей массива, а не создание новых дочерних массивов, которые мне нужны.
Любые предложения или решения были бы высоко оценены. Благодаря!
Это все жизнеспособные варианты, хотя мой профайлер говорит функция Хамзы немного быстрее выполняется. Спасибо за вашу помощь всем! – Jason