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
A voir également:
- Array taille limitée ? Comment l'augmenter?
- Comment réduire la taille d'un fichier - Guide
- Augmenter vitesse pc windows 10 - Guide
- Reduire taille image - Guide
- Afficher taille dossier windows - Guide
- Augmenter la luminosité pc - Guide
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!
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
mais pour ce qui est de la déclaration d'array, c'est bizarre, car quand je l'avais mal déclarée, cela ne me gardait que 255 mails (environs)...
Encore merci