0

我执行了以下代码,但 php 说:

Notice: Undefined variable: b in ..\..\..\demo.php on line 4 
Notice: Undefined variable: a in ..\..\..\demo.php on line 4

php代码:

<?php
  $a='a';$b='b';
  function test(){
      echo $a.$b;
  }
  test(); // error
?>

但我将代码更改为:

<?php
  $a='a';$b='b';
  function test($a,$b){
      echo $a.$b;
  }
  test($a,$b); // ab
?>

为什么$a$b在第一种情况下是未定义的,因为我之前定义了它们?为什么参数需要传入php?其他类似的不需要JavaScript

4

3 回答 3

2

如果变量是在函数外部定义的,则需要指定global关键字。如:

<?php
$a='a';$b='b';
function test(){
    global $a, $b;
    echo $a.$b;
}
test(); // error
?>

但是您的第二个示例通常是推荐的处理方式。

于 2013-03-01T19:34:49.163 回答
1

您提供的第一个示例中的 $a 和 $b 分别尝试从本地范围而不是全局范围访问这些变量。您可以尝试像这样声明它们

 function test() {
     global $a, $b;
     echo $a . $b; //or $GLOBALS['a'].$GLOBALS['b'];
 }

你会得到正确的值。

于 2013-03-01T19:35:02.253 回答
0

尝试这个

$a = '101';
$func = function() use($a) {
    echo $a;
};

function func_2() {
    global $func;
    $a = 'not previouse a';
    $func();
}

func_2();
于 2013-03-01T19:51:10.910 回答