Проверка наличия пустых массивов: считать против пустых - PullRequest
91 голосов
/ 07 февраля 2010

Этот вопрос о Как узнать, пуст ли массив PHP , заставил меня задуматься над этим вопросом

Есть ли причина, по которой count следует использовать вместо empty при определении, массив пуст или нет?

Моя личная мысль была бы, если 2 эквивалентны для случая пустых массивов, которые вы должны использовать empty, потому что это дает логический ответ на логический вопрос. Из вопроса, связанного выше, кажется, что count($var) == 0 является популярным методом. Для меня, хотя технически правильно, не имеет смысла. Например. В: $ var, ты пустой? A: 7 . Ммм ...

Есть ли причина, по которой я должен использовать count == 0 вместо этого или просто вопрос личного вкуса?

Как отмечают другие в комментариях к удаленному ответу, count будет влиять на производительность для больших массивов, поскольку ему придется считать все элементы, тогда как empty может остановиться, как только узнает, что это не так. пустой. Итак, если они дают одинаковые результаты в этом случае, но count потенциально неэффективен, зачем нам использовать count($var) == 0?

Ответы [ 12 ]

0 голосов
/ 08 августа 2017

Поскольку переменная, проанализированная как отрицательная, вернет int(1) с count()

Я предпочитаю ($array === [] || !$array) проверить пустой массив.

Да, нам следует ожидать пустой массив, но не следует ожидать хорошей реализации функций без принудительных возвращаемых типов.

Примеры с count()

var_dump(count(0));
> int(1)
var_dump(count(false));
> int(1)
0 голосов
/ 07 февраля 2010

Я переделал свой разум, ребята, спасибо.

Хорошо, нет разницы между использованием empty и count. Технически, count следует использовать для массивов, а empty можно использовать как для массивов, так и для строк. Так что в большинстве случаев они взаимозаменяемы, и если вы увидите документы php, вы увидите список предложений count, если вы находитесь на empty и наоборот.

...