Пустая строка и null — отличия?
Собственно я думал это одно и то же, разве нет ?
нет.В обеих случаях у $a нет значения.
в обоих случаях у а есть вполне конкретные значения и тип.nullstring
а кажется вам что это одно и тоже, потому что при не строгом сравнении == они будут равны, и empty($a) вернет true в обоих случаяхtypes.comparisons
А вы прогоните через gettype() ваши переменные. NULL - это тип данных, который используется для обозначения пустой переменной. а $a=''  - это тип данных строка, пустая, но строка, а не пустота. Кроме строк вы в переменные можете записать массивы, объекты, числа и т.д., поэтому добавили именно отдельный тип для абстрагирования от других существующих типов.