【问题标题】:PHP using variable in an included functionPHP在包含的函数中使用变量
【发布时间】:2013-05-17 09:28:18
【问题描述】:

主文件;

$opid=$_GET['opid'];
include("etc.php");

等.php;

function getTierOne() { ... }

我可以在函数之前或之后使用 $opid 变量,但我不能在函数中使用它,它返回未定义。 我应该怎么做才能将它与包含文件中的函数一起使用?

【问题讨论】:

  • global $opid; 在函数的开头

标签: php function variables include


【解决方案1】:
$getTierOne = function() use ($opid) {
  var_dump($opid);
};

【讨论】:

    【解决方案2】:

    因为函数只有局部作用域。它只能看到函数本身内定义的变量。任何在函数外定义的变量只能导入到函数中或全局使用。

    有几种方法可以做到这一点,其中一种是全局关键字:

    $someVariable = 'someValue';
    
    function getText(){
        global $someVariable;
    
        echo $someVariable;
        return;
    }
    
    getText();
    

    但是,我建议不要使用这种方法。如果您将$someVariable 更改为另一个名称会怎样?您必须转到已将其导入的每个功能并进行更改。不是很动态。

    另一种方法是这样的:

    $someVariable = 'someValue';
    
    function getText($paramater1){
        return $parameter1;
    }
    
    echo getText($someVariable);
    

    这更合乎逻辑,更有条理。将变量作为参数传递给函数比在每个函数中使用 global 关键字要好得多。

    另外,POST、REQUEST、SESSION 和 COOKIE 变量都是超全局变量。这意味着它们可以在函数中使用,而不必隐式导入它们:

    // Assume the value of $_POST['someText'] is someValue
    
    function getText(){
       $someText = $_POST['someText'];
       return $someText;
    }
    
    echo getText();   // Outputs someValue
    

    【讨论】:

    • 使用global $opid 它适用于第一个功能,但不适用于其他功能。包含文件中有五个函数。
    • 因为您需要在要将该变量导入的每个函数中使用 global 关键字。例如:function testFunctionOne(){ global $someVariable; }function testFunctionTwo(){ global $someVariable; } 如您所见,必须为每个函数使用全局关键字并不实际,请查看:stackoverflow.com/questions/1557787/…
    【解决方案3】:
    function getTierOne() 
    { 
         global $opid;
         //...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-02
      • 2017-02-20
      • 2012-11-03
      • 2012-05-21
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2018-09-12
      相关资源
      最近更新 更多