使用自执行函数来模拟一个块级作用域(例如for循环结束后, 后面代码不能再访问循环变量)

Original 2019-03-23 10:10:10 200
abstract:<?php function work(){     $func = function(){         $arr = [7,12,100,52,5];      
<?php

function work(){

    $func = function(){

        $arr = [7,12,100,52,5];

        for($i=0;$i < count($arr);$i++){

            for($j=$i+1;$j < count($arr);$j++){

                if($arr[$i] > $arr[$j]){

                    $temp = $arr[$i];

                    $arr[$i] = $arr[$j];

                    $arr[$j] = $temp;

                }

            }

        }

        var_dump($arr);

    };

    $func();

    echo isset($temp)? '能访问作用域内的循环变量' : '不能访问作用域内的循环变量'.'<br>';

}

work();


Correcting teacher:西门大官人Correction time:2019-03-23 11:33:30
Teacher's summary:本质是:$func相当于一个函数,函数执行完后,会释放掉它所含有的所有变量,所以在work函数里访问不到func的变量

Release Notes

Popular Entries