函数中的 PHP 变量范围


php variable scope in functions

我在变量作用域方面遇到困难。 我有一个从多维数组中查找实验室值的函数。 我想向函数传递实验室的名称并让它查找它。 但是,我传递给get_lab函数的$lab无法访问array_filter中使用的第二个函数。 范围哪里出错了?

function get_lab($lab){
    $result = array_filter($labs_array, function($v) { 
        return $v[1] == $lab; 
    });
    print_r($result);
}

你应该像这样在use子句中声明变量

function get_lab($lab){
    $result = array_filter($labs_array, function($v) use ($lab) { 
        return $v[1] == $lab; 
    });
    print_r($result);
}

查看手册中的匿名函数

你需要将$lab传递给内部函数。

一种方法是使用 use 关键字

function get_lab($lab){
    $lab = $lab;
    $result = array_filter($labs_array, function($v) use ($lab) { 
        return $v[1] == $lab; 
    });
    print_r($result);
}