Заменить array_key_exists(0, $terms) на isset($terms[0]).А это зачем? Сама по себе функция array_key_exists не является устаревшей, просто её теперь нельзя для проверки наличия свойства объекта. Для массивов ничего не меняется.
$t = [null];
var_dump(isset($t[0])); // false
var_dump(array_key_exists(0, $t)); // true