Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在不使用全局变量的情况下影响函数外部的变量_Php_Function_Variables_Global - Fatal编程技术网

Php 如何在不使用全局变量的情况下影响函数外部的变量

Php 如何在不使用全局变量的情况下影响函数外部的变量,php,function,variables,global,Php,Function,Variables,Global,需要一些关于如何在不使用全局变量的情况下影响函数外部变量的代码示例。我还想知道我应该在哪里使用global,在哪里不使用global 提前感谢。不要使用全局变量,因为它是邪恶的 对于问题的第二部分,您可以这样做: function test(&$param) { $param = 'new'; } $test = 'old'; test($test); echo $test; // returns 'new' 不要使用全局变量,因为它是邪恶的 对于问题的第二部分,您可以这样做

需要一些关于如何在不使用全局变量的情况下影响函数外部变量的代码示例。我还想知道我应该在哪里使用global,在哪里不使用global


提前感谢。

不要使用全局变量,因为它是邪恶的

对于问题的第二部分,您可以这样做:

function test(&$param) {
    $param = 'new';
}

$test = 'old';
test($test);
echo $test; // returns 'new'

不要使用全局变量,因为它是邪恶的

对于问题的第二部分,您可以这样做:

function test(&$param) {
    $param = 'new';
}

$test = 'old';
test($test);
echo $test; // returns 'new'
在不使用全局变量的情况下影响另一个作用域中的变量的唯一方法是使用。通过在参数前面加上
&
,可以定义一个通过引用获取其参数的函数。例如:

function increment(&$var) {
  $var++;
}

$int = 1;
increment($int);
echo $int; // 2
在回答“我什么时候应该使用globals”这个问题时,我从来没有这样做过。它们使程序流变得混乱,并引发错误和意外行为,同时也降低了代码的可移植性,因为它依赖于另一个作用域中的变量名。

在不使用全局变量的情况下影响另一个作用域中的变量的唯一方法是使用。通过在参数前面加上
&
,可以定义一个通过引用获取其参数的函数。例如:

function increment(&$var) {
  $var++;
}

$int = 1;
increment($int);
echo $int; // 2
$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';

}
在回答“我什么时候应该使用globals”这个问题时,我从来没有这样做过。它们使程序流变得混乱,并引发错误和意外行为,同时也降低了代码的可移植性,因为它依赖于另一个作用域中的变量名

$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';

}
或者告诉我们你具体想做什么

对不起,我的英语不好

或者告诉我们你具体想做什么

对不起,我的英语不好


凯文·扬克更喜欢用非全局方法来影响凯文·扬克更喜欢用非全局方法来影响这是什么意思?我是新来的,为什么他们是邪恶的。PHP内部的邪恶行为是什么?&意味着通过引用而不是值来传递变量。全局变量不是“邪恶的”,但它们通常是糟糕的编程实践,因为它们容易使事情变得混乱并导致意外错误。关于邪恶,这个网站上有很多问题和答案。这里阅读的
&
是什么意思?我是新来的,为什么他们是邪恶的。PHP内部的邪恶行为是什么?&意味着通过引用而不是值来传递变量。全局变量不是“邪恶的”,但它们通常是糟糕的编程实践,因为它们容易使事情变得混乱并导致意外错误。关于邪恶,这个网站上有很多问题和答案。对于这里阅读的
&
,PHP应该在较新版本中放弃该函数PHP很少放弃这些功能。新版本的目标通常是尽可能向后兼容,而旧脚本可能依赖于全局。还有一点是,在一些非常非常罕见的情况下,它们是有用的。很像“goto”——人们会告诉你永远不要使用它们,因为这比说“只有在你完全理解你正在做的事情及其所有含义时才使用它们”更简单。告诉新手程序员永远不要使用这些功能更容易、更安全,当他们变得更有经验时,你可以告诉他们其他的。完美的答案。非常感谢PHP在较新版本中放弃该功能PHP很少放弃功能。新版本的目标通常是尽可能向后兼容,而旧脚本可能依赖于全局。还有一点是,在一些非常非常罕见的情况下,它们是有用的。很像“goto”——人们会告诉你永远不要使用它们,因为这比说“只有在你完全理解你正在做的事情及其所有含义时才使用它们”更简单。告诉新手程序员永远不要使用这些功能更容易、更安全,当他们变得更有经验时,你可以告诉他们其他的。完美的答案。非常感谢