0

主文件;

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

等.php;

function getTierOne() { ... }

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

4

3 回答 3

1
$getTierOne = function() use ($opid) {
  var_dump($opid);
};
于 2013-05-22T10:54:49.700 回答
0
function getTierOne() 
{ 
     global $opid;
     //...
}
于 2013-05-22T10:53:47.210 回答
0

这是因为该函数仅具有本地范围。它只能看到函数本身中定义的变量。任何在函数外定义的变量只能导入到函数中或全局使用。

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

$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
于 2013-05-22T11:05:21.947 回答