Use the array_flip($keys) as first argument returns incorrect values (the numeric indices of $keys), and using that as the second argument to array_interset_keys() does not preserve the order of the keys from $keys, but used the $values order.

Neither of which is what we want... I don't have a better idea?