【问题标题】:Get part of an array获取数组的一部分
【发布时间】:2010-01-25 12:59:12
【问题描述】:

我有一个数组:

$array = array(
  'key1' => 'value1',
  'key2' => 'value2',
  'key3' => 'value3',
  'key4' => 'value4',
  'key5' => 'value5',
);

我想用指定的键获得其中的一部分 - 例如key2, key4, key5

预期结果:

$result = array(
  'key2' => 'value2',
  'key4' => 'value4',
  'key5' => 'value5',
);

最快的方法是什么?

【问题讨论】:

标签: php arrays


【解决方案1】:

你需要array_intersect_key函数:

$result = array_intersect_key($array, array('key2'=>1, 'key4'=>1, 'key5'=>1));

如果您的键作为值在数组中,array_flip 也可以提供帮助:

$result = array_intersect_key(
    $array, 
    array_flip(array('key2', 'key4', 'key5'))
);

【讨论】:

    【解决方案2】:

    您可以使用array_intersect_keyarray_fill_keys 这样做:

    $keys = array('key2', 'key4', 'key5');
    $result = array_intersect_key($array, array_fill_keys($keys, null));
    

    array_flip 代替 array_fill_keys 也可以:

    $keys = array('key2', 'key4', 'key5');
    $result = array_intersect_key($array, array_flip($keys));
    

    【讨论】:

      【解决方案3】:

      我看到的唯一方法是迭代数组并构造一个新数组。

      要么使用 array_walk 遍历数组并构造新的数组,要么构造一个匹配的数组并使用 array_intersect_key 等。

      【讨论】:

        猜你喜欢
        • 2011-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        • 2012-06-15
        相关资源
        最近更新 更多