【发布时间】:2012-04-24 13:10:08
【问题描述】:
需要一些代码示例,了解如何在不使用全局变量的情况下影响函数外部的变量。另外我想知道我应该在哪里使用 global 而不是。
提前致谢。
【问题讨论】:
-
Kevin Yank 更喜欢使用非全局方法来影响
标签: php function variables global
需要一些代码示例,了解如何在不使用全局变量的情况下影响函数外部的变量。另外我想知道我应该在哪里使用 global 而不是。
提前致谢。
【问题讨论】:
标签: php function variables global
唯一在不使用全局变量的情况下影响另一个范围内的变量的方法是使用references。您可以通过在参数前面加上& 来定义一个通过引用获取参数的函数。例如:
function increment(&$var) {
$var++;
}
$int = 1;
increment($int);
echo $int; // 2
在回答“我什么时候应该使用全局变量”这个问题时——从不。它们使程序流程混乱并引发错误和意外行为,而且它们还降低了代码的可移植性,因为它依赖于另一个范围内的变量名。
【讨论】:
goto - 人们会告诉你永远不要使用它们,因为它比说“只有在你完全理解你在做什么以及它的所有含义时才使用它们”更简单。告诉新手程序员永远不要使用这些功能更容易也更安全,然后当他们变得更有经验时,你可以告诉他们其他方式。
不要使用全局变量,它是邪恶的。
对于问题的第二部分,您可以这样做:
function test(&$param) {
$param = 'new';
}
$test = 'old';
test($test);
echo $test; // returns 'new'
【讨论】:
& 在这里阅读的内容 php.net/manual/en/language.references.php
$var = 'value';
echo $var; //outputs "value"
a($var);
echo $var //outputs "new value; func a";
b('some other sutff', 'etc');
echo $var; //outputs "new value; func b";
function a(&$var2affect){
$var2affect = 'new value; func a';
return;
}
function b($some_var, $some_second_var){
global $var;
$var = 'new vaule; func b';
}
或者只是告诉我们你具体想做什么
对不起我的英语
【讨论】: