1

我正在尝试将数组作为参数传递给新的 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);

索引.php

<html>
      echo '$arr1 ='.$arr1;
      echo '$arr2 ='.$arr2;
</html>

这可能吗?感谢您的帮助。

4

3 回答 3

3

您已经可以访问该数组。

 function load($view='index',$data=false){

     require $view.'.php';

 }

在您的 index.php 中,您可以执行以下操作:

<p>
   <?=$data['value'];?>
</p>

因为你在你的职能范围内。

请注意,那里有很多模板引擎,我强烈建议您使用其中之一。

于 2012-05-15T18:03:29.920 回答
2

在你的“要求”声明之前......你可以这样做:

foreach($data as $name => $value) {
    $$name = $value;
}
于 2012-05-15T18:04:52.207 回答
2

我认为您对包含文件的实际含义感到困惑。因为包含一个文件几乎意味着您附加了包含的文件,所以您不是重定向或类似的东西。因此,如果您将其包含在定义变量的文件中,您将能够在“视图”文件中使用变量。

但是,您可以使用 php 进行解析,将逻辑和视图分开很好,但我建议您尝试使用模板引擎,它可以完成您尝试做的所有事情,但更好的是内置转义、渲染, 缓存等

我会推荐以下引擎:

http://twig.sensiolabs.org/ Twig,它很棒,可以在 Symfony 框架中使用如果我没记错的话!它易于安装和使用。

Twig 的替代品是 Smarty,它也是一个很棒的模板引擎,并在许多项目中使用。http://www.smarty.net/

Have a look at both of them If you wish and decide which one you like the most. But if you are not interested and preferably want your own 'template engine' it's perfectly fine, I am just saying why reinvent the wheel, when there is code that is tested, well written and so forth.

于 2012-05-15T18:15:39.473 回答