1

作品:

 $t = function($x,$y) use (&$t){
...
}

動作しません:

 $t = function($x,$y) use ($t){
...
}

関数自体を参照として渡す必要があるのはなぜですか?

4

2 に答える 2

2

たぶんこれが役立ちます:

$f = 42;
$f = function() use ($f)
{
  var_dump($f);
};
$f();

それは42を出力します。

use()関数が定義され、 に割り当てられる前に、 がヒットします$f。したがって、参照渡ししない場合は、関数が作成される前と同じように変数にアクセスしています。この場合は 42 です。あなたの場合は NULL です。

参照を渡す$fと、関数が呼び出されたときに の値が取得されます。これは、期待どおりの無名関数になります ($f を再割り当てしていないと仮定します)。

于 2013-02-25T09:07:28.963 に答える
0

参照変数を渡すということは、そのスコープ内の同じ変数にアクセスしていることを意味します。

参照変数は、以前に作成されたものと同じ変数を指します。

<?php

    $a = 10;

    $b = &$a;

    function change_b($pass)
    {
        $b = $pass++;
    }

    echo $b."<br />";

    change_b(&$a);

    echo $b;

?>

上記のコードは10を出力し、次に11を出力します。

再帰関数は同じリソースに何度もアクセスする必要があり、値をコピーするよりもはるかに効率的です。

于 2013-02-25T08:35:27.820 に答える