Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过键字符串获取数组值_Php_Arrays_Templating - Fatal编程技术网

Php 通过键字符串获取数组值

Php 通过键字符串获取数组值,php,arrays,templating,Php,Arrays,Templating,我正在为我的下一个项目构建一个模板引擎,该项目进展顺利。它用相应的值替换{tag} 我希望{tag[0][key]}也被替换。我只需要知道如何获取值,如果我有数组和键的字符串表示,如: $arr = array( 0 => array( 'key' => 'value' ), 1 => array( 'key' => 'value2' ) ); $tag = 'arr[0][key]'; echo($$t

我正在为我的下一个项目构建一个模板引擎,该项目进展顺利。它用相应的值替换
{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]; ?>

我相当困惑。您正在尝试访问$tag[0][key],我假定它与$arr[0][key]相同。。。那么问题是什么呢?说真的,你通过在
上写
{tag[0][key]}
获得了什么?你认为你需要重新发明的其他无数可怜的模板引擎的新颖性是如何产生的呢?模板引擎真糟糕。没有理由创建这样的开销而不是编写一些php代码。@Nitroware抱歉,{tag[0][key]}只是一个例子。如果我有一个值为arr[0][key]的var,我如何从$arr中获取该值@戈登,我有个家伙在做html,这对他来说很简单。然后我做这件事是为了迎接it的挑战,扩展到地平线和其他方面;)@Bried:PHP是一个模板引擎。在PHP上运行一个模板引擎就像驾驶你的汽车去工作,把它装载到一辆平板卡车的后面——没用的开销。你好,你有这个想法了。我必须承认你关于模板系统有用性的评论是非常真实的。创建这个系统对我来说是一个巨大的挑战,我学到了很多关于静态变量、方法、咖喱等的知识!你的答案正是我想要的,谢谢!
<?= $arr[0][key] ?>
$keys = array();
preg_match_all('|\[([^\]]*)\]|', $tag, $keys);
$result = $arr;
foreach ($keys[1] as $key) {
    $result = $result[$key];
}
echo "$result\n";