繁体   English   中英

php中的全局变量无法正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM