我有一个小函数来按键过滤我的数组:
private function filterMyArray( )
{
function check( $v )
{
return $v['type'] == 'video';
}
return array_filter( $array, 'check' );
}
这很好用,但由于我有更多的键要过滤,我正在考虑以某种方式从 main 函数传递一个变量:filterMyArray($key_to_serch)
没有成功,我也尝试了一个全局变量,但似乎不起作用。
由于我的问题:)有些混乱,我需要这样的东西:
private function filterMyArray( $key_to_serch )
{
function check( $v )
{
return $v['type'] == $key_to_serch;
}
return array_filter( $array, 'check' );
}
传递该变量的任何想法?
这就是 PHP 5.3 中的匿名函数派上用场的地方(注意 use
的使用(:
private function filterMyArray($key)
{
return array_filter(
$array,
function check($v) use($key) {
return $v['type'] == $key;
}
);
}
private function filterMyArray($key_to_search) {
function check( $v ) {
return $v[$key_to_search] == 'video';
}
return array_filter( $array, 'check' );
}
应该工作,因为内部函数可以访问外部函数中的变量
你需要使用 use
关键字来获取范围内的变量,参见 php 文档中的这个例子。
这是一个使用 create_function 的 PHP <5.3 版本。
private function filterMyArray( $key)
{
$fn = create_function( '$v', "return $v[$key] == 'video';");
return array_filter( $array, $fn);
}