(PHP 5 >= 5.1.0, PHP 7)
array_intersect_ukey — Computa a interseção de arrays usando uma função de callback nas chaves para comparação
$array1
   , array $array2
   [, array $...
   ], callback $key_compare_func
   )
   array_intersect_ukey() retorna um array
   contendo todos os valores de array1
   que têm as mesmas chaves presentes em todos os argumentos.
  
array1Array inicial para comparação dos arrays.
array2Primeiro array para comparar as chaves.
arrayLista variável de argumentos para comparar as chaves.
key_compare_funcA função de comparação precisa retornar um inteiro menor, igual, ou maior que zero caso o primeiro argumento seja considerado respectivamente maior, igual ou maior que o segundo. Note que antes do PHP 7.0.0 este inteiro tinha de estar no intervalo de -2147483648 a 2147483647.
   Retorna os valores de array1 cujas chaves existem
   em todos os argumentos.
  
Exemplo #1 Exemplo da função array_intersect_ukey()
<?php
function key_compare_func($key1, $key2)
{
    if ($key1 == $key2)
        return 0;
    else if ($key1 > $key2)
        return 1;
    else
        return -1;
}
$array1 = array('azul'  => 1, 'vermelho'  => 2, 'verde'  => 3, 'roxo' => 4);
$array2 = array('verde' => 5, 'azul' => 6, 'amarelo' => 7, 'rosa'  => 8);
var_dump(array_intersect_ukey($array1, $array2, 'key_compare_func'));
?>
O exemplo acima irá imprimir:
array(2) {
  ["azul"]=>
  int(1)
  ["verde"]=>
  int(3)
}
   Em nosso exemplo você vê que somente as chaves 'azul'
   e 'verde' estão presentes em ambos os arrays e assim
   retornadas. Também note que os valores para as chaves
   'azul' e 'verde' diferem entre os
   dois arrays. Uma combinação ainda ocorre porque somente as chaves são
   checadas. Os valores retornados são os do array1.