Incrementer

cs_henri12 Messages postés 114 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 9 avril 2007 - 16 sept. 2005 à 16:40
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 - 18 sept. 2005 à 11:47
bonjour

j incremente la variable $n++; ne fonctionne pas en php
quand je mets $n+=1; ça fonctionne

pourquoi $n++; ne fonctionne pas en php

merci

4 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
16 sept. 2005 à 16:57
Bien sûr que si $i++ fonctionne...



mais attention !!!!!

$a=4;

$a=1+$a--;

echo $a; // renvoi 5. Il y'avait un piège ;)
0
cs_henri12 Messages postés 114 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 9 avril 2007
16 sept. 2005 à 18:14
dans cette fonction $n++; ne fonctionne pas

function add_mail($email){
$f = $this->fichier;
$email = trim($email);
if ($this->check_validite($email)){
if (!$this->mail_existe($email)){
$nc = $this->get_listeMails();
$nd=count($nc);
$fichier = fopen('mail.txt', 'r');
for ($c=0;$c<$nd;$c++)
{
//fseek($fichier,12);
$emai = fgets($fichier);
//echo $emai;
list ($mail, $m) = explode (';', $emai);
}
if ($m == "")
$m=0;
//echo $m;
$n=$m;
//echo $emai;
if ($n == 0){
$n=1;
}
if ($m >= 1){
//echo $emai;
$n+=1; ICI $n++; ne fonctionne pas j ai essayer en dehors de la
//echo $n; fonction il fonctionne
}
//echo $m;
if ($m == 9828){
echo "base complète revenez plus tard";
//mail moi
}
if ($m < 9828){
$fp = fopen($f, "a+");
fputs($fp, $email.";".$n."\r\n");
fclose($fp);
}
return true;
return $nd;
}else{
return false;
}
}else{
return false;
}
}
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 sept. 2005 à 20:01
Salut,



une fois c'est le problème inverse qui s'était produit en local : $i+=1; ne fonctionnait plus, au contraire de $i++;



je ne vois pas d'où pourrait venir ton problème, mais bon c'est le genre de trucs mystérieux.



Tu peux garder le $i+=1; c'est plus rapide que $i++; (ça te fera rien gagner mais bon ça te fera rien perdre non plus)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
18 sept. 2005 à 11:47
Salut,



J'ai peut-être trouvé pourquoi $n++ ne fonctionne pas !



Explication :

D'où viend ce $n ?

...

list ($mail, $m) explode (';', $emai); // $emai> $m est (string)

if ($m == "") $m=0; //$m n'est pas vide => $m reste (string)

$n=$m; // $n est $m donc est (string)

if ($n == 0) $n=1 // là tu compare un (string) à un (int) ... !!!

// si $n contient un chiffre dans sa chaine de caractère, $n == 0 est faux

if ($m >= 1) $n+=1; // $n est (string)... (string)++ => BUG,

// par contre pour l'opération (int)+(string),
PHP converti le string en int est fait l'opération. Donc ça passe au
parsing, mais relève d'une très grosse erreur de conception.





Voilà ma petite expli.

Ne connaissant pas le fichier mail.txt, je n'ai pas chercher à
comprendre le but de ces manipulation. Mais il me semble que le
comportement de la fonction add_mail n'est pas franchement celui
recherché.



A cause de la permissivité de PH, Fait attention aux types avant de les utiliser.

Teste ta fonction avec des cas expérimantaux, pour voir sa robustesse.

Puis si les tests prouvent que la fonction est correcte, $n+=1 ne dérange pas ;)



A+







...
0
Rejoignez-nous