2015-09-01 2 views
-1

У меня есть два массива, как например:Как я могу получить ключи от пересечения двух массивов?

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

Я хочу, чтобы вытащить ключи из $array2, для которого у меня есть значение в $array1.

Так что в этом случае ожидаемый результат будет:

array(1, 3, 5) 

Как мне это сделать?

+0

Вы пробовали что-нибудь? => Покажите свои усилия (псевдокод, код, исследование, ...) – Rizier123

+1

да. Я исследовал здесь http://www.w3schools.com/php/php_ref_array.asp для функции - был любопытный, надеясь, что она была одна. И на самом деле я посмотрел на функцию array_intersection ... – maxelcat

+0

^^ Затем покажите это в своем вопросе, отредактируйте его и добавьте. Покажите свое исследование и какую функцию вы пробовали и где вы застряли. – Rizier123

ответ

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 
) 

Вы можете использовать с массив и ассоциативного массива или как ассоциативный массив.

+0

подумал об этом - мой первый массив не имеет ключа ... – maxelcat

+1

OP хочет «ключи» от '$ array2' – Rizier123

+1

@maxelcat В ваших массивах всегда есть ключи, основанные на 0 или ассоциативные. – Rizier123

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

Смежные вопросы