Зачем считать (false) return 1?

Вы знаете, почему <?= count(false) ?> Возвращает 1 ?

Solutions Collecting From Web of "Зачем считать (false) return 1?"

Указанное поведение:

Если var не является массивом или объектом с реализованным интерфейсом Countable, возвращается 1.

Согласно http://php.net/manual/en/function.count.php

Поскольку 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 является допустимым, ложным результатом для пустого массива / объекта).

Это может быть причиной выбора ценности, которую функция возвращает в ситуации, которую вы описываете.

Хороший способ запомнить это в своем уме:

  • count (false) в основном то же самое, что:
  • count ("one boolean"), и поэтому в результате получается "ONE".