Вы знаете, почему <?= count(false) ?> Возвращает 1 ?
Указанное поведение:
Если var не является массивом или объектом с реализованным интерфейсом Countable, возвращается 1.
Поскольку false также является значением, и если count () не получает массив, а действительную переменную, он возвращает true что равно 1 .
$result = count(null); // $result == 0 $result = count(false); // $result == 1
Мне кажется, что PHP не позволяет использовать count() чтобы определить, является ли элемент массивом или объектом. У них есть специальные функции для этого ( is_array() , is_object() ), и может возникнуть соблазн наивно использовать count() и проверить false условие для определения массива или объекта. Вместо этого PHP создает не-объекты, а не массивы возвращают 1 (что является правдивым), так что этот метод не может быть наивно использован таким образом (так как 0 является допустимым, ложным результатом для пустого массива / объекта).
Это может быть причиной выбора ценности, которую функция возвращает в ситуации, которую вы описываете.
Хороший способ запомнить это в своем уме: