Spent ages trying to get this to work, then eventually remembered I had opened the mailbox READONLY - obviously you need write permission for setting flags!(PHP 4, PHP 5, PHP 7, PHP 8)
imap_setflag_full — Positionne un drapeau sur un message
   imap_setflag_full() affecte le
   flag spécifié aux messages de la
   sequence donnée.
  
imapUne instance de IMAP\Connection.
sequence
       Une séquence de numéro de messages. Vous pouvez énumérer les
       messages désirés avec la syntaxe X,Y, ou
       récupérer tous les messages d'un intervalle avec la syntaxe
       X:Y
      
flag
       Les flags que vous pouvez modifier sont \Seen,
       \Answered, \Flagged,
       \Deleted, et \Draft (comme défini dans
       la » RFC2060).
      
options
       options est un masque de bits, qui accepte
       uniquement la valeur suivante :
       
ST_UID - la séquence contient des UID au lieu de 
          numéros de séquence.
         
        
   Retourne toujours true.
  
   Lance une exception ValueError si le paramètre options est invalide.
  
| Version | Description | 
|---|---|
| 8.1.0 | La paramètre imapattend désormais une instance de
  IMAP\Connection ; auparavant, une resourceimapétait attendue. | 
| 8.0.0 | Une exception ValueError est désormais lancée
       pour des valeurs de paramètre optionsinvalides. Auparavant,
       un avertissement était émis et la fonction retournaitfalse. | 
Exemple #1 Exemple avec imap_setflag_full()
<?php
$mbox = imap_open("{imap.example.org:143}", "username", "password")
     or die("Connexion impossible : " . imap_last_error());
$status = imap_setflag_full($mbox, "2,5", "\\Seen \\Flagged");
echo gettype($status) . "\n";
echo $status . "\n";
imap_close($mbox);
?>Spent ages trying to get this to work, then eventually remembered I had opened the mailbox READONLY - obviously you need write permission for setting flags!Where possible I would avoid using POP3 accounts. My host allowed me to upgrade to IMAP and it is so much easier. I think the only way to accurately create any form of mail client with POP3 is to download the messages into an SQL database which is a big task to start with, considering the IMAP standards have the functionality we need built in.
I experimented with flag setting in POP3 and it seems they do not stick at all, and it is almost impossible to retrieve the number of unread messages (ie. the Seen / Unseen thing does not work)
Converted to IMAP and it's working - the majority of the functions in this section seem to be IMAP focussed and WILL NOT generally work with POP3