2011-02-26 12 views
0

다음 프로젝트에 사용할 템플릿 엔진을 구축하고 있습니다. 해당 값으로 {tag}을 대체합니다. 키 문자열로 배열 값 가져 오기

나는 {tag[0][key]}뿐만 아니라 교체해야합니다. 이 문제의 매우 간단한 버전, 당신이 그것을 이해의 희망입니다

$arr = array(
    0 => array(
     'key' => 'value' 
    ), 
    1 => array(
     'key' => 'value2' 
    ) 
); 

$tag = 'arr[0][key]'; 

echo($$tag); 

: 내가 알아야 할 모든 것은이 같은 배열과 키의 문자열 표현이있는 경우, 값을 얻는 방법이다. 그렇지 않으면 그 질문에 대해 기꺼이 답변 해 드리겠습니다. 자체 템플릿 엔진으로 태어났다 PHP, 그리고이 일에 여전히 좋다 :

+0

나는 매우 혼란 스러워요 할 수 있습니다. 당신은 내가 $ arr [0] [key]와 같다고 가정하는 $ tag [0] [key]에 접근하려고합니다 ... 그러면 그 질문은 무엇입니까? – Nitroware

+2

진지하게,'''를 통해'{tag [0] [key]}'를 쓰면 무엇을 얻게 될까요? 엔진을 재발 명할 필요가 있다고 생각하는 엔진이 있습니까? – Gordon

+1

템플릿 엔진을 빨아들입니다. 일부 PHP 코드를 작성하는 대신 이러한 오버 헤드를 만들 이유가 없습니다. –

답변

0

나는 거기에 바퀴를 재발견 할 필요가 없다는 것을 동의 심지어 지금은 사용되지 않는 양식을 가지고하는 데 사용

<?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"; 
+0

안녕하세요. 아이디어가 있습니다. 나는 templating 시스템의 유용성에 관한 여러분의 의견이 사실임을 인정해야합니다. 그래도 시스템을 만드는 것은 큰 도전이었습니다. 정적 vars, 메서드, 커링 (currying) 등에 대해 많은 것을 배웠습니다! 당신의 대답은 제가 찾고있는 것이 었습니다. 고마워요! – Esben