如何从两个数组的交叉处获取键?

时间:2015-09-01 17:25:28

标签: php arrays

我有两个数组作为例子:

$array1 = ['ASD', 'Ep', 'Com'];
$array2 = [1=>'ASD', 2=>'bob', 3=>'Ep', 4=>'Jam', 5=>'Com'];

我想从$array2中取出$array1中有值的密钥。

所以在这种情况下,预期的输出是:

array(1, 3, 5)

我该怎么做?

3 个答案:

答案 0 :(得分:5)

您应该可以使用array_intersect

$array1 = ['ASD', 'Ep', 'Com'];
$array2 = [1=>'ASD', 2=>'bob', 3=>'Ep', 4=>'Jam', 5=>'Com'];

$keys = array_keys(array_intersect($array2, $array1));

DEMO:http://codepad.org/GyIrdQpE

答案 1 :(得分:2)

您可以使用PHP内置函数in_array()

foreach($array2 as $key => $value) { // loop through $array2 values
    if (in_array($value,$array1)) { // check if current value exists in $array1
        $array3[] = $key; // assign key to $array3
    }
}

print_r($array3); // outputs 'Array ( [0] => 1 [1] => 3 [2] => 5 )'

答案 2 :(得分:0)

您可以使用array_intersect($array1, $array2)PHP Documentation

  

示例:

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");

$result=array_intersect($a1,$a2);
print_r($result);

退出将是:

Array
(
    [a] => red
    [b] => green
    [c] => blue
)

您可以使用数组关联数组关联数组