Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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 - Fatal编程技术网

我不知道';我不理解这段php代码的输出?

我不知道';我不理解这段php代码的输出?,php,Php,我理解这个代码有困难,请有人给我解释一下好吗 <?php $i = 0; $func1 = function() use ($i) { echo "$i"; }; $func2 = function() use (&$i) { echo "$i"; }; for ( $i=1; $i<=5; $i++ ) { $func1(); $func2(); } ?> 输出:01 0 2 0 3 0 4

我理解这个代码有困难,请有人给我解释一下好吗

<?php
    $i = 0;
    $func1 = function() use ($i) { echo "$i"; };
    $func2 = function() use (&$i) { echo "$i"; };
    for ( $i=1; $i<=5; $i++ ) {
        $func1();
        $func2();
    }
?>

输出:01 0 2 0 3 0 4 0 5
<?php
    $i = 0;
    $func1 = function() use ($i) { echo "$i"; };
    $func2 = function() use (&$i) { echo "$i"; };
    for ( $i=1; $i<=5; $i++ ) {
        $func1();
        $func2();
    }
?>
当定义函数时,
use($i)
的第一个定义从父范围获取值(因此,在
$func1
中,
$i
将始终是
0
)。但是,当使用
use(&$i)
时,第二个函数是通过引用
$i
,因此它将打印
$i
的实际值,而不仅仅是在定义时

这些函数定义称为匿名函数

更多关于匿名函数的信息,请参阅

=========

因此,对于
$func1
$i
总是
0
。 对于
$func2
,它将从
1
5
(由于您的
For
循环)

迭代1:func1:$i=0;func2:$i=1

迭代2:func1:$i=0;func2:$i=2


迭代N:func1:$i=0;func2:$i=N

您希望看到的输出是什么?@summea我不明白&在这种情况下是如何工作的。为什么它引用for循环中定义的变量?格式非常好:PI不理解下行投票。这是一个完全正确的问题,但可能不是最好的写作方式。