Php 如何在子函数中使用函数变量

Php 如何在子函数中使用函数变量,php,Php,所以我有以下功能:(这应该是一个最新版本) 但这会导致一个错误 Notice: Undefined variable: searchString in.... Notice: Undefined variable: type in.... 问题:为什么我不能在该子功能中使用变量 我尝试过的: .... $latests = array_reduce($versions, function ($latest, $folder) { echo $latest, $folder; i

所以我有以下功能:(这应该是一个最新版本)

但这会导致一个错误

Notice: Undefined variable: searchString in....
Notice: Undefined variable: type in....
问题:为什么我不能在该子功能中使用变量

我尝试过的:

....
$latests = array_reduce($versions, function ($latest, $folder) {
    echo $latest, $folder;
    if (!$latest) {
        return $folder;
    }
    global $searchString, $type; //but the variables are empty
    $latestNum = preg_replace('!^' . substr($searchString[$type],0,-1) . '!', '', $latest);
    $folderNum = preg_replace('!^' . substr($searchString[$type],0,-1) . '!', '', $folder);

    return version_compare($latestNum, $folderNum, '>') ? $latest : $folder;

});
....
很简单:

function ($latest, $folder) use ($searchString, $type) {

要使用父范围中的变量,请使用
use
;)

$searchString
在哪里定义?您看不到吗?我声明一个数组。。。这个很好用。。。但是在array\u reduce回调中,他们丢失了
array\u reduce()
的使用有点过分;一个普通的循环会更有逻辑。
function ($latest, $folder) use ($searchString, $type) {