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
?>

ただし、2番目の例は、通常、推奨される処理方法です。

于 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 に答える