在这种情况下如何在函数中传递参数?

时间:2012-05-15 18:00:26

标签: php arrays function

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

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

3 个答案:

答案 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/

看看他们两个如果你愿意并决定你最喜欢哪一个。但是如果你不感兴趣并且最好想要你自己的'模板引擎'那就完全没问题,我只是说为什么要重新发明轮子,当有代码经过测试,写得很好等等。