array_diff - очевидный ответ, но, поскольку вы попросили самый эффективный способ, вот тест
$big = range(1, 90000);
$remove = range(500, 600);
$ts = microtime(true);
$result = array_diff($big, $remove);
printf("%.2f\n", microtime(true) - $ts);
$ts = microtime(true);
$map = array_flip($remove);
$result = array();
foreach($big as $e)
if(!isset($map[$e]))
$result[] = $e;
printf("%.2f\n", microtime(true) - $ts);
отпечатки на моей машине
0.67
0.03
Таким образом, простой цикл с поиском на основе хеша примерно в 20 раз быстрее, чем array_diff.