[英]global variables in php not working
如下例所示,我希望输出为“测试值”,为什么我会得到“0”?
文件main.php
<?php
include_once 'functions.php';
$var = '0';
test();
echo $var;
?>
文件functions.php
<?php
function test()
{
global $var;
$var = 'test value';
}
?>
你最好的选择是:
include_once 'functions.php';
$_GLOBALS["var"] = '0';
test();
echo $_GLOBALS["var"];
并且在函数中使用$_GLOBALS["var"]
而不使$_GLOBALS
成为全局,它就是。
您的代码完美运行: http : //codepad.org/zI9xg1sK
我能想到的唯一原因是main.php
也被包含在函数中,使得$var
成为该函数范围内的局部变量。
在这种情况下,这将有助于:
<?php
global $var;
include_once 'functions.php';
$var = '0';
test();
echo $var;
?>
你为什么不这样做呢
return $var;
并以这种方式调用函数:
$var = test();
这是另一个例子。 Ian评论了CappY的答案,即真实函数已经返回一个值。 我认为这就是为什么他认为他需要一个全球可怜的人。
您不需要(ab)使用全局变量从函数返回多个值。 两个备选(和更好)选项是返回一个数组,或通过引用传递变量。
返回数组的示例:
function test() {
return array('value 1', 'value 2');
}
// Example usage
list($var1, $var2) = test();
var_dump($var1); // outputs "value 1"
var_dump($var2); // outputs "value 2"
示例通过引用传递
function test(&$var2) {
$var2 = 'value 2';
return 'value 1';
}
// Example usage
$var1 = test($var2);
var_dump($var1); // outputs "value 1"
var_dump($var2); // outputs "value 2"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.