我正在尝试将一个数组 array1 映射为另一个数组 array2 的键。基本上这个:
[
"array1_val1" => [
"array2_val1"=> "creation_time",
"array2_val2"=> "creation_time",
...
],
...,
]
这不是问题,问题是我正在尝试的方法。如下:
$div = array_map(function ($value){
global $files;
global $value;
return array_filter($files, function($k){
// global $value;
$ex = explode("_", $k);
var_dump(substr($ex[0], 0, 5)." ".$value." ".__LINE__);
return substr($ex[0], 0, 5) === $value;
}, ARRAY_FILTER_USE_KEY);
}, $file_names_g);
解释
文件名示例: ABC_24May2017.bak
现在我希望文件以 $ file_names_g 中相同的前5个字母开头,其中 $ file_names_g 是一个键,并且数组的文件名为关键字和创建日期作为值,(这是$ files数组的格式)。
现在问题是我无法弄清楚如何给array_filter中的函数赋值$ variable变量。提及它global
没有用,我得到一个空值或null
。我怎样才能克服这个问题,或者有更好的方法吗?
此致
答案 0 :(得分:3)
您可以在封闭函数内使用use
:
$value = 'foo';
function($k) use ($value) {
// you can now access the variable value
}