请参阅下面的代码,这是为了验证变量是否具有特定值(并基于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);
答案 0 :(得分:2)
$myoptions
超出了您的职能...尝试添加function ($var) use ($myoptions)
,如
$result = filter_var($testVar, FILTER_CALLBACK, array('options' => function ($var) use ($myoptions) {
return validate_select($var, $myoptions);
}));