php Imap_search count всегда возвращает 1, когда в почтовом аккаунте нет сообщений

Когда в моем почтовом аккаунте есть сообщения, соответствующие критериям поиска, он дает правильный подсчет. Но всякий раз, когда нет сообщений (количество сообщений 0) в соответствии с критериями поиска в то время, он также возвращает счет как «1»... вот мой код.. Дайте мне предложения..

$imap = imap_open("{mail.amazepixels.com}INBOX", "mail_id", "password")
  or die("can't connect: " . imap_last_error());

$rec = imap_search($imap, 'ON "22 May 2017"');
$rec_count = count($rec);

$ans = imap_search($imap, 'UNANSWERED ON "22 May 2017"');
$ans_count = count($ans);

$seen = imap_search($imap, 'UNSEEN ON "22 May 2017"');
$seen_count = count($seen);

echo $rec_count."-".$ans_count."-".$seen_count;exit;

Я только что дал будущую дату.. она всегда возвращает счет 1..


person mahendran amazepixels    schedule 10.05.2017    source источник
comment
это потому, что imap_search() возвращает false, если сообщения не найдены, и count(false) == 1. Измените его на: $ans_count = $ans ? count($ans) : 0; и он должен работать.   -  person Magnus Eriksson    schedule 10.05.2017
comment
@MagnusEriksson прямо здесь.   -  person Anant Kumar Singh    schedule 10.05.2017
comment
@MagnusEriksson Большое спасибо .. отличная работа .. У меня есть одно сомнение .. message_id имеет значение null только для входящих сообщений, поступающих из учетных записей gmail. У вас есть комментарии?   -  person mahendran amazepixels    schedule 10.05.2017
comment
Хотя я ничего об этом не знаю. Вам следует задать другой вопрос по этому вопросу, если вы не можете найти ответ здесь. Кстати, я написал ответ. Не стесняйтесь отмечать его как принятый, если он сработал для вас.   -  person Magnus Eriksson    schedule 10.05.2017
comment
@Магнус ..С удовольствием..Сделал..   -  person mahendran amazepixels    schedule 10.05.2017


Ответы (1)


imap_search() возвращает false, если сообщения не найдены, и count(false) == 1.

Вы можете исправить это, изменив его на:

$ans_count = $ans ? count($ans) : 0; 

Из руководства:

Возвращает FALSE, если критерии поиска непонятны или сообщения не найдены.

Вот сообщение о проблеме с подсчетом: Почему count(false) возвращает 1?

person Magnus Eriksson    schedule 10.05.2017