代码之家  ›  专栏  ›  技术社区  ›  hsz

仅从关联数组中获取指定键的元素

  •  6
  • hsz  · 技术社区  · 14 年前

    现在已经很晚了,我知道这是一个很简单的问题,但现在我还没有主意,最后期限就要到了。

    我有两个阵列:

    $array1 = array(
      'a' => 'asdasd',
      'b' => 'gtrgrtg',
      'c' => 'fwefwefw',
      'd' => 'trhrtgr',
    );
    $array2 = array(
      'b', 'c'
    );
    

    从第二个数组中按键获取一部分assoc数组的函数名是什么?

    $result = array(
      'b' => 'gtrgrtg',
      'c' => 'fwefwefw',
    );
    

    谢谢!

    3 回复  |  直到 14 年前
        1
  •  20
  •   Bill Karwin    14 年前

    试试这个:

    array_intersect_key($array1, array_flip($array2)).
    
        2
  •  0
  •   Ming-Tang    14 年前

    我认为没有这样的功能,所以我将实现一个:

    function array_filter_keys($array, $keys) {
      $newarray = array();
      foreach ($keys as $key) {
        if (array_key_exists($key, $array)) $newarray[$key] = $array[$key];
      }
      return $newarray;
    }
    
        3
  •  0
  •   artlung    14 年前

    我很好奇有没有内置的。我会这样做的。

    $result = array();
    foreach ($array2 as $key) {
      if (array_key_exists($key, $array1) {
        $result[$key] = $array1[$key];
      }
    }