php中数组方法-array_map的作用域问题
今天实现上传文件和指定路径下文件进行对比时,用到了这个array_map方法,传入的回调函数里面执行 array_splice()方法时,却报错第一个参数不是一个数组,给定的null。
起初在array_map回调 外打印 传入到array_splice中的数组,却发现类型正确是数组并且有值,苦恼了好半天,尝试解决无果后,想到在array_map中打印一下这第一个参数,果然是null!
查阅资料得到array_map回调存在一个内部作用域,无法取得作用域外部的数据。也就是没有‘闭包’【子函数内部可以取到父函数的数据】这一概念!
解决办法:使用 use()关键字, 括号内可以填入想要访问的变量,多个用逗号隔开。【use 从同一个 namespace 中导入类、函数和常量:】