繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM