2011-08-10 59 views
0
$arr1 = array(
    'a' => 123, 
    'b' => 123, 
    'c' => 123, 
    'd' => 123, 
); 

$arr2 = ('a', 'b', 'c', 'd', 'e'); 

如何从$ arr2中删除不存在作为$ arr1中的键的元素?从基于另一个阵列的阵列中删除元素

例如e不存在为$ ARR1密钥,因此它应该被删除

回答

1
$arr2 = array_intersect($arr2, array_keys($arr1)) 

它计算的两套路口 - $arr2值和$arr1

0

试试这个:

foreach ($arr2 as $key => $value) { 
    if (!array_key_exists($value, $arr1)) { 
     unset($arr2[$key]); 
    } 
} 
0

为什么不使用简单的方法并使用array_keys?这避免了必须通过一次获取所有键来执行每个键的操作。

$arr2 = array_keys($arr1); 
+0

如果'$ arr1'包含不在'$ arr2'中的元素? –

+0

@Felix Kling:那是个问题。但在OP发布的例子中,'array_keys'可以正常工作。 –