PHP имеет функцию array_intersect () , которая может сделать это. Например, ypo может поместить следующий код в PHPFiddle для тестирования:
<?php
$array1 = array('ace', 'one', 'five', 'nine', 'elephant');
$array2 = array('elephant', 'seven', 'ace', 'jack', 'queen');
print_r($array1); print('<br>');
print_r($array2); print('<br>');
print_r(array_intersect($array1, $array2)); print('<br>');
?>
Тогда вы увидите, что он дает вам то, что вы хотите (переформатирован для удобства чтения):
Array ( [0] => ace
[1] => one
[2] => five
[3] => nine
[4] => elephant )
Array ( [0] => elephant
[1] => seven
[2] => ace
[3] => jack
[4] => queen )
Array ( [0] => ace
[4] => elephant )
Обратите внимание, что на самом деле это не дает последовательных ключей в результате, ключи, кажется, приходят из первого массива, заданного array_intersect()
. Если важно, чтобы вы получили последовательно проиндексированный массив, вам может потребоваться этап последующей обработки, чтобы настроить его. Примерно так должно быть хорошее начало (модификация оригинальной скрипки для использования последовательных индексов):
<?php
$array1 = array('ace', 'one', 'five', 'nine', 'elephant');
$array2 = array('elephant', 'seven', 'ace', 'jack', 'queen');
print_r($array1); print('<br>');
print_r($array2); print('<br>');
$array3 = array();
foreach (array_intersect($array1, $array2) as $val) {
array_push($array3, $val);
}
print_r($array3); print('<br>');
?>