按键过滤数组

时间:2011-12-09 01:37:52

标签: php arrays array-filter

我有这个小函数来按键过滤我的数组:

 private function filterMyArray( )
 {
      function check( $v )
      {
           return $v['type'] == 'video';
      }
      return array_filter( $array, 'check' );
 }

这很好用,但由于我有更多的键过滤,我想从主函数传递一个变量:filterMyArray($key_to_serch)没有成功,我也试过一个全局变量,但似乎没有工作

由于我的问题有些困惑:),我需要这样的东西:

 private function filterMyArray( $key_to_serch )
 {
      function check( $v )
      {
           return $v['type'] == $key_to_serch;
      }
      return array_filter( $array, 'check' );
 }

有想法传递该变量吗?

4 个答案:

答案 0 :(得分:3)

这是 PHP 5.3 中的匿名函数派上用场的地方(请注意使用use):

private function filterMyArray($key)
{
     return array_filter(
         $array,
         function check($v) use($key) {
             return $v['type'] == $key;
         }
     );
}

答案 1 :(得分:0)

private function filterMyArray($key_to_search) {
  function check( $v ) {
       return $v[$key_to_search] == 'video';
  }
  return array_filter( $array, 'check' );
}

应该有效,因为内部函数可以访问外部函数中的变量

答案 2 :(得分:0)

您需要使用use关键字来获取范围内的变量,c.f。这example in php's doc

答案 3 :(得分:0)

这是PHP< 5.3使用create_function的版本。

private function filterMyArray( $key)
{
      $fn = create_function( '$v', "return $v[$key] == 'video';");
      return array_filter( $array, $fn);
}