Array taille limitée ? Comment l'augmenter?
Résolu
jpaulweb
-
jpaulweb -
jpaulweb -
Bonjour,
J'utilise un tableau pour y placer des adresses mails et supprimer les doublons.
Cela fonctionne TB, mais je n'ai qu'un certain nombre d'adresses qui sont gardées (+ ou -250 sur 300) les autres ne sont pas dans la variable.
Voici le programme pour mettre les adresses dans la variable:
Et ici pour supprimer les doublons et les séparer par une virgule.
Merci d'avance pour votre réponse.
JPAul
J'utilise un tableau pour y placer des adresses mails et supprimer les doublons.
Cela fonctionne TB, mais je n'ai qu'un certain nombre d'adresses qui sont gardées (+ ou -250 sur 300) les autres ne sont pas dans la variable.
Voici le programme pour mettre les adresses dans la variable:
/// Liste des mails
$lste_mail = array();
$mail1 = $donnees["Email_M"];
if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail1) and $mail1_old != $mail1)
{$liste_mail[]= $mail1; $mail1_old = $mail1; $n2++;}
$mail2 = $donnees["Email_P"];
if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail2) and $mail2_old != $mail2)
{$liste_mail[]= $mail2; $mail2_old = $mail2;$n2++;}
$mail_Ani = $donnees["Email_Ani"];
if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail_Ani) and $mail_Ani_old != $mail_Ani)
{$liste_mail[]= $mail_Ani; $mail_Ani_old = $mail_Ani;$n2++;}
Et ici pour supprimer les doublons et les séparer par une virgule.
$nbre_mail = sizeof($liste_mail);
if ($nbre_mail>0)
{
$liste_mail = array_unique($liste_mail); //suppression des doublons
// Création de la variable $liste_mails
$nbre_mail = sizeof($liste_mail);
for($i=0; $i<$nbre_mail; $i++) {
if ($liste_mail[ $i ] != '') { $n++;
if ($liste_mails =='') $liste_mails = $liste_mail[ $i ];
else $liste_mails = $liste_mails.', '.$liste_mail[ $i ]; }}
Merci d'avance pour votre réponse.
JPAul
1 réponse
-
Voilà, lis attentivement et souhaite que ton problème soit résolu. À toi maintenant de faire le reste du boulot! $= Bon courage,
//Ici, tu avais tapé $lste_mail au lieu de $l[i]ste_mail, //cette ligne était donc inutile puisque tu déclarais //alors une variable qui n'étais jamais sollicitée. //Assure-toi de bien réviser ton code! =# $liste_mail = array(); //Maintenant, il n'y acucune limite à la taille d'un array //sauf si un jour tu surpassais la quantité de mémoire allouée //à l'éxécution de ton script. Tu ne l'atteindras JAMAIS, //sauf si vraiment tu le faisais délibérément. Ce qui cause ton //problème est alors une fuite (=p!). Ne serait-ce pas parce que //tes expressions régulières rejettent les adresses avec majuscules? //Ajoute un tout petit i à la fin de tes expressions pour les rendre //insensibles à la casse, comme suit: if(preg_match('!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!i', //... //Ici, à défaut de compter le nombre de mail que tu as, //la fonction is_array() fera le travail. Elle renvoie true //si l'array contient une ou plusieurs valeurs. if(is_array($liste_mail)){ //suppression des doublons $liste_mail = array_unique($liste_mail); //Maintenant, il est absolument inutile de //compter à nouveau combien de valeurs contient //$liste_mail parce qu'il existe une fonction //qui se chargera de faire le travail. //Création de la variable $liste_mails $liste_mails = implode(', ', $liste_mail); } //Et je me permet le commentaire! ;) - Évite surtout //d'utiliser des noms de variable qui portent à confusion. //$liste_mail et $liste_mails sont très très semblables si //on ne porte pas suffisament attention!-
Merci beaucoup pour ta réponse!
J'ai corrigé mes erreurs et essayé...
J'ai du rajouter des crochets à la déclaration de variable array.
$liste_mail[] = array(); sinon il ne gardait qu'une adresse mail.
pour compter le nombre d'éléments. is_array($liste_mail) me donne toujours 1.
J'ai donc repris : sizeof($liste_mail);
Voilà tout fonctionne, il n'y a donc pas de limite d'éléments pour array sauf s'il elle n'est pas déclarée...
Encore merci
JPAul -
is_array retourne un booléen, soit 1 pour TRUE ou 0 pour FALSE. Si tu as vraiment à compter et à utiliser le nombre d'éléments que contient le tableau, vas-y avec sizeof() - quoique la tendance se veut d'utiliser count() dont le résultat est le même. Maintenant, n'oublie pas: il n'y a pas de limite d'éléments dans un array, qu'il soit déclaré ou non! Bon courage, =)
-
-
-
-