主文件;
$opid=$_GET['opid'];
include("etc.php");
等.php;
function getTierOne() { ... }
我可以在函数之前或之后使用 $opid 变量,但我不能在函数中使用它,它返回未定义。我应该怎么做才能将它与包含文件中的函数一起使用?
$getTierOne = function() use ($opid) {
var_dump($opid);
};
function getTierOne()
{
global $opid;
//...
}
这是因为该函数仅具有本地范围。它只能看到函数本身中定义的变量。任何在函数外定义的变量只能导入到函数中或全局使用。
有几种方法可以做到这一点,其中一种是 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