【问题标题】:How to pass arguments in function in this case?在这种情况下如何在函数中传递参数?
【发布时间】:2012-05-15 18:00:25
【问题描述】:

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

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

【问题讨论】:

  • 您不能真正在文件之间“传递”变量本身。如果在一个文件的全局范围内定义了一个变量并且包含了另一个文件,那么它也将在该文件的全局范围内定义(包括几乎只是附加包含的文件)。

标签: php arrays function


【解决方案1】:

您已经可以访问该数组了。

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

     require $view.'.php';

 }

在你的 index.php 中你可以这样做:

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

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

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

【讨论】:

    【解决方案2】:

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

    foreach($data as $name => $value) {
        $$name = $value;
    }
    

    【讨论】:

      【解决方案3】:

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

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

      我会推荐以下引擎:

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

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

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

      【讨论】:

      • 我确实使用模板引擎。谢谢您的帮助。 +1
      猜你喜欢
      • 1970-01-01
      • 2021-09-14
      • 2021-01-21
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多