Я создаю механизм шаблонов для своего следующего проекта, который отлично подходит. Он заменяет {tag}
соответствующим значением.
Я хочу, чтобы {tag[0][key]}
также был заменен. Все, что мне нужно знать, – это как получить значение, если у меня есть строковое представление массива и ключа, например:
$arr = array( 0 => array( 'key' => 'value' ), 1 => array( 'key' => 'value2' ) ); $tag = 'arr[0][key]'; echo($$tag);
Это очень простая версия проблемы, я надеюсь, вы это понимаете. Или я был бы рад ответить на любые вопросы об этом.
Я согласен с тем, что нет необходимости изобретать велосипед: сам PHP родился как механизм шаблонов и все еще хорош в этом:
<?php echo $arr[0][key]; ?>
Он даже использовал теперь устаревшую форму
<?= $arr[0][key] ?>
В любом случае вы можете сделать следующее
$keys = array(); preg_match_all('|\[([^\]]*)\]|', $tag, $keys); $result = $arr; foreach ($keys[1] as $key) { $result = $result[$key]; } echo "$result\n";