将变量作为参数传递时,php函数不起作用

时间:2014-04-16 16:53:11

标签: php

请参阅下面的代码,这是为了验证变量是否具有特定值(并基于Is it possible to add to filter_var() function user-defined parameters?的解决方案示例)

我在下面的代码中的注释中测试了两个案例(A,B)。 我不明白为什么在B情况下功能不正常? (我通过ideone.com测试)

function validate_select($val, $myoptions)
{
//print_r($myoptions);
for($i=0;$i<count($myoptions);$i++){
    if($val==$myoptions[$i]){
        return $val;
    }
}
    return false;
}

$testVar = 'apple';
$myoptions = array('banana','pear','apple');
$result = filter_var($testVar, FILTER_CALLBACK, array('options' => function($var) {
  //return validate_select($var, array('banana','pear','apple')); //case A: returns correct value 'apple'
  return validate_select($var, $myoptions); //case B: returns unexpected value false
}));
echo($result);

1 个答案:

答案 0 :(得分:2)

$myoptions超出了您的职能...尝试添加function ($var) use ($myoptions),如

$result = filter_var($testVar, FILTER_CALLBACK, array('options' => function ($var) use ($myoptions) {
    return validate_select($var, $myoptions);
}));