[英]How to pass arguments in function in this case?
我正在尝试将数组作为参数传递给新的php文件。
$data=array('arr1'=>'haha', 'arr2'=>'wawa');
function load($view='index',$data=false){
require $view.'.php';
if (isset($data)){
//I want to pass $data(array) to index.php so I can use the array
//in index.php page.
//not sure what to do here.
}
}
load('index', $data);
index.php
<html>
echo '$arr1 ='.$arr1;
echo '$arr2 ='.$arr2;
</html>
这可能吗? 感谢您的帮助。
您已经可以访问该阵列。
function load($view='index',$data=false){
require $view.'.php';
}
在您的index.php中,您可以执行以下操作:
<p>
<?=$data['value'];?>
</p>
因为您在功能范围内。
请注意,那里有许多模板引擎,我强烈建议您使用其中之一。
在“需要”语句之前,您可以执行以下操作:
foreach($data as $name => $value) {
$$name = $value;
}
我认为您对包含文件的实际含义感到困惑。 因为包含文件几乎意味着您要附加包含的文件,所以您未在进行重定向或类似操作。 因此,如果将其包含在定义变量的文件中,则可以使用“查看”文件中的变量。
但是,您可以使用php进行这样的解析,将逻辑和视图分开是一个很好的选择,但是我想建议您尝试一个模板引擎,该引擎可以完成您尝试做的所有事情,但是内置的转义,渲染效果更好,缓存等。
我会推荐以下引擎:
http://twig.sensiolabs.org/ Twig,它很棒而且可以在Symfony框架中使用如果我没有记错的话! 它易于安装和使用。
Twig的替代产品是Smarty,它也是一个出色的模板引擎,并在许多项目中使用。 http://www.smarty.net/
看看他们两个是否愿意,并确定最喜欢哪一个。 但是,如果您不感兴趣,并且最好是想要自己的“模板引擎”,那就太好了,我只是在说为什么要重新发明轮子,如果有经过测试的代码,编写得当的代码等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.