Php 数组映射中的变量不';t返回值
数组映射中的条件为true,在条件中插入了数据和打印语句。但为什么它不返回变量值呢。此处Php 数组映射中的变量不';t返回值,php,arrays,array-map,Php,Arrays,Array Map,数组映射中的条件为true,在条件中插入了数据和打印语句。但为什么它不返回变量值呢。此处successs正在打印,但$var变量的值未更新。数组映射仅返回数组,是否与此处相关 $var = 'fail'; array_map(function ($en, $np, $idSrvcs) { $data=[Fnct::filter_int($idSrvcs),Fnct::filter_str($en),Fnct::filter_str($np)]; if(MdlDb::insrtD
successs
正在打印,但$var
变量的值未更新。数组映射仅返回数组,是否与此处相关
$var = 'fail';
array_map(function ($en, $np, $idSrvcs) {
$data=[Fnct::filter_int($idSrvcs),Fnct::filter_str($en),Fnct::filter_str($np)];
if(MdlDb::insrtData('srvcs_dtl',$data,'')){
echo 'success'; // this line is printing
$var = 'success';
}
}, $en, $np, $idSrvcs);
echo $var // here output is fail.
因为匿名函数(array_map的回调)中的变量$var有自己的作用域,它是一个不同的变量。在为$var赋值之前,可以通过转储$var进行检查。它将是未定义的,而不是“失败” 您可以使用
use
关键字从函数内的父作用域传递变量,如下所示:
// Inherit $message
$example = function () use ($message) {
var_dump($message);
};
$example();
来自示例#3从父范围继承变量
请注意,仅传递变量不足以修改它,因为函数检索副本(对象将通过引用传递):
$s = 1;
$a = function () {$s++;};
$a(); // PHP Notice: Undefined variable: b
var_dump($s); // 1
$b = function () use ($s) {$s++;};
$b();
var_dump($s); // 1
$c = function () use (&$s) {$s++;};
$c();
var_dump($s); // 2