Специально для любителей заменять array_key_exists на isset
isset() не возвращает TRUE для ключей массива, указывающих на NULL, а array_key_exists() возвращает.
Линчно я бы не стал ничего менять. Код читается, выполняет свою функцию. Можно извратиться, и сделать цикл, или использовать неподходящую функцию. Вопрос - ЗАЧЕМ.
Если сильно постараться, то можно записать этот же код короче. Но короче - не значит чище. В подавляющем большинстве случаев получается ровно наоброт. Короткая, но абсолютно нечитаемая абракадабра. или код с ошибками. или все вместе. Ответы в этом топике служат прекрасной иллюстрацией.
Работает - ничего не трогай. Не на версисаж код пишешь