php函数中的变量范围

时间:2016-04-25 15:02:30

标签: php

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

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

2 个答案:

答案 0 :(得分:3)

您应该在use子句中声明变量,如此

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

查看anonymous functions

的手册

答案 1 :(得分:2)

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

一种方法是使用use关键字

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