Есть ли недочеты в коде?
Код плохо отформатирован и его трудно читать. 
Логика не вполне удачна. Лучше использовать разницу между двух дат DateTime::diff() или date_diff() – из двух дат получите объект с числом дней, месяцев, лет между ними. Только сбросьте на 0 время у обеих дат, чтобы работать только с датами. Такой вариант пригодится для более сложного случая, когда вы захотите ещё "Два дня назад", "Послезавтра" и "через неделю"
Есть всего 3 значимых исхода:
разница в днях = 0 - сегодня
разница в днях = 1 - вчера
разница в днях > 1 - писать дату.
Зачем какие-то монстроидальные строки писать?
Дальше - работаем с Unixtimestamp?
Разница в датах: (int) ($date2 - $date1) / 86400
без всяких лишних преобразований