$add_data['username'] && $add_data['password'] == ""
не делает то, что вы ожидаете.Вы не можете факторизовать условие таким образом.
Скорее, используйте $add_data['username'] == "" && $add_data['password'] == ""
Для большей наглядности сделайте то же самое для $add_data['username'] && $add_data['password'] != ""
, который будет заменен на $add_data['username'] != "" && $add_data['password'] != ""
(но это условиебудет работать как положено, см. ниже)
Выполнение if ($var && $var2 == "")
проверит, не является ли $var
ложным и если $var2
равно ""
Не ложь (иначе истина) - это нечто отличается от:
- само логическое значение FALSE
- целое число 0 (ноль)
- число с плавающей точкой 0.0 (ноль)
- пустая строка, а строка "0"
- массив с нулевыми элементами
- специальный тип NULL (включая unsetпеременные)
- Объекты SimpleXML, созданные из пустых тегов
Любое другое значение считается true
Источник: Официальный документ