我正在尝试将数组作为参数传递给新的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>
这可能吗?感谢您的帮助。
答案 0 :(得分:3)
您已经可以访问该阵列了。
function load($view='index',$data=false){
require $view.'.php';
}
你可以在index.php中找到:
<p>
<?=$data['value'];?>
</p>
因为你属于你的职能范围。
请注意,那里有很多模板引擎,我强烈建议你使用其中一个。
答案 1 :(得分:2)
在你的“要求”陈述之前......你可以这样做:
foreach($data as $name => $value) {
$$name = $value;
}
答案 2 :(得分:2)
我认为你对包含文件的实际含义感到困惑。因为包含文件几乎意味着您附加了包含的文件,所以您不会重定向或类似的东西。因此,您将能够使用“视图”文件中的变量如果您在文件中包含变量定义的变量。
然而你可以使用php来解析这个,你保持逻辑和视图分离是很棒的但是我想建议你尝试一个模板引擎,它会做你尝试做的所有但是更好,内置转义,渲染,缓存等。
我会推荐以下引擎:
http://twig.sensiolabs.org/ Twig,它很棒并且在框架中使用Symfony如果我没有记错的话!它易于安装和使用。
Twig的另一种选择是Smarty,它也是一个很棒的模板引擎,并在许多项目中使用。 http://www.smarty.net/
看看他们两个如果你愿意并决定你最喜欢哪一个。但是如果你不感兴趣并且最好想要你自己的'模板引擎'那就完全没问题,我只是说为什么要重新发明轮子,当有代码经过测试,写得很好等等。