我创建了这个函数,并注意到在执行过程中出现了一个问题。我无法在子函数中得到$names_from_source的结果。没有错误,它检测变量,但它的值总是为NULL。
/*
source: array of MyObject
copy: array of MyObject
return: return duplicated objects based on name
*/
function get_all_duplicated($source, $copy) {
$names_from_source = array_map(fn($obj): string => $obj->name, $source);
var_dump($names_from_source); // return list of names
return array_filter($copy, function($obj) {
global $names_from_source;
var_dump($names_from_source); // return NULL
return in_array($obj->name, $names_from_source);
});
}为什么?谢谢
发布于 2022-10-07 09:59:49
由于$names_from_source不是全局变量,所以不能使用全局变量。它是父函数的局部变量。
要在子函数中调用它,我必须使用术语use
/*
source: array of MyObject
copy: array of MyObject
return: return duplicated objects based on name
*/
function get_all_duplicated($source, $copy) {
$names_from_source = array_map(fn($obj): string => $obj->name, $source);
var_dump($names_from_source); // return list of names
return array_filter($copy, function($obj) use($names_from_source) {
return in_array($obj->name, $names_from_source);
});
}https://stackoverflow.com/questions/73985353
复制相似问题