簡體   English   中英

按鍵過濾數組

[英]filter array by key

我有這個小功能可以通過鍵過濾數組:

 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' );
 }

知道要傳遞該變量嗎?

這是PHP 5.3中的匿名函數派上用場的地方(請注意use的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 doc中的示例

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM