天天看点

php 匿名函数 use和global的区别

我在使用匿名函数的使用发现use关键字 ,他的作用是连接闭包和外界变量,闭包可以保存所在代码块上下文的一些变量和值。

后来我有个疑问,global不是也可以代替use?(使用关键字“global”你就可以把全局数据导入到一个函数的局部范围内)

但其实他们是有区别的,请看下面的代码

<?php

$str = $str2= "hello";
$fun = function () use ($str){
    $str = $str." world";//使用use传递进来的变量
    global $str2;//使用global
    $str2 = $str2." world";
};


$fun();


echo $str;
echo "<br>";
echo $str2;
echo "<br>";

?>
           

结果:

hello 
hello world 
           

结论:

使用use并不会影响全局变量,只会作用于方法中;而使用global则会将变量值给改变。这就是use和global的区别