PHP有办法在闭包外部得到闭包内部的变量吗?

<?php


 $arr = [
     ['2','3'],
     ['6,7']
 ];
 

     $s= array_walk($arr, function($_value,$_key){

           $a = 10;

           return true;
   });

     var_dump($a);//$a 打印的时候报错了,如何得到$a呢?
阅读 7.2k
5 个回答
<?php

$arr = [
    ['2','3'],
    ['6,7']
];
$a = 0;
$s = array_walk($arr, function($_value,$_key) use (&$a) {
   $a = 10;

   return true;
});

var_dump($a);

没有办法,楼上各位的是闭包使用外部变量

感觉要是说闭包的话,不应该限制在某个具体函数内部(array_walk),因为它的会回调都规定死了,而应该这样:

$closure=function (){//$closure为匿名函数,其实正常函数也可以
    $a=123;//匿名函数内的变量
    return function() use($a) {//返回一个匿名函数
        return $a;
    };
};
$innerClosure=$closure();//获取返回的匿名函数
echo $innerClosure();//获取内部$a的值

能让你访问到还叫闭包么?return 或者 定义外部变量吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题