$variable++ qui ne marche pas?

Le
jp
Bonjour, en php4 $a++ fonctionnait et avec php7 je suis obligé de faire
$a = $a + 1. Quelqu'un sait pourquoi?

C'est juste une question sans importance. Juste pour comprendre
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric Demeester
Le #26532789
Bonjour,
jp (10 Dec 2019 02:33:23 GMT - fr.comp.lang.php) :
Bonjour, en php4 $a++ fonctionnait et avec php7 je suis obligé de faire
$a = $a + 1. Quelqu'un sait pourquoi?

À en croire le manuel :
https://www.php.net/manual/fr/language.operators.increment.php
et ma propre expérience, l'incrémentation $a++ fonctionne avec toutes
les versions de php.
C'est juste une question sans importance. Juste pour comprendre...

Le problème doit être ailleurs...
Otomatic
Le #26532793
jp
Bonjour, en php4 $a++ fonctionnait et avec php7 je suis obligé de faire
$a = $a + 1. Quelqu'un sait pourquoi?

Les post et pré-incrémentations fontionnent toujours parfaitement, même
sous PHP 7.4.0.
Le problème est ailleurs.
jp
Le #26532796
Le Tue, 10 Dec 2019 09:45:51 +0100, Eric Demeester a écrit :
Le problème doit être ailleurs...

Ok. Merci à tous les deux. Du coup, je ne comprend plus d'où peut venir
le problème, n'étant pas un spécialiste. C'est bizarre quand-même...
Otomatic
Le #26532801
jp
Ok. Merci à tous les deux. Du coup, je ne comprend plus d'où peut venir
le problème, n'étant pas un spécialiste. C'est bizarre quand-même...

Peut-être qu'en donnant la quinzaine de lignes qui entourent la
post-incrémentation $a++ et en expliquant pourquoi vous pensez que ça ne
fonctionne pas, nous pourrions voir d'où vient ce problème.
Olivier Miakinen
Le #26532800
Le 10/12/2019 03:33, jp a écrit :
Bonjour, en php4 $a++ fonctionnait et avec php7 je suis obligé de faire
$a = $a + 1. Quelqu'un sait pourquoi?

La variable s'appelle $a ou $variable ou encore autre chose ? Ce n'est
pas le même problème qu'avec count qui est devenu un mot-clé ?
--
Olivier Miakinen
Olivier Miakinen
Le #26532799
Le 10/12/2019 11:24, Otomatic a écrit :
Peut-être qu'en donnant la quinzaine de lignes qui entourent la
post-incrémentation $a++ et en expliquant pourquoi vous pensez que ça ne
fonctionne pas, nous pourrions voir d'où vient ce problème.

[OUI++]
--
Olivier Miakinen
jp
Le #26532805
Le Tue, 10 Dec 2019 11:30:38 +0100, Olivier Miakinen a écrit :
Le 10/12/2019 03:33, jp a écrit :
Bonjour, en php4 $a++ fonctionnait et avec php7 je suis obligé de faire
$a = $a + 1. Quelqu'un sait pourquoi?

La variable s'appelle $a ou $variable ou encore autre chose ? Ce n'est
pas le même problème qu'avec count qui est devenu un mot-clé ?

Pour la fonction que je nommais count(), j'ai compris comment je me suis
trompé. J'avais un script assez ancien qui utilisait une fonction vues().
En voulant reprendre ce script pour autre chose assez similaire, je l'ai
renommée count(). Je ne savais pas que c'était un mot réservé. Du coup ça
ne marchait plus et je ne comprenais pas pourquoi...
Dans le cas présent, c'est toujours le même script et la variable
s'appelle $counter. La post-incrémentation ne fonctionne pas. J'ai mis un
moment avant de savoir d'où venait l'erreur mais j'ai résolu le problème
en faisant $counter = $counter + 1;
Voici le petit script:
<?php
$counter = 0;
$ip = getenv("REMOTE_ADDR");
function counting($counter) {
$fp = fopen('download_counter.txt', 'w');
if ($fp) {
fwrite($fp, $counter);
fclose($fp);
}
}
$fp = fopen('download_counter.txt', 'r');
if ($fp) {
$counter = fgets($fp, 20);
fclose($fp);
if ( ($ip != 'MonIP') && ($ip != '127.0.0.1') ) {
$counter = $counter + 1;//C'est ici que $counter++ ne fonctionne pas...
counting($counter);
}
/*Affiche le compteur seulement quand c'est le webmaster qui se connecte.
=> décommenter la ligne A et mettre en commentaire la ligne B*/
else { echo $counter . ' téléchargements au moins.'; }//Ligne A
/*Affiche le compteur tout le temps => mettre en commentaire la ligne A
et décommenter la ligne B pour que tout le monde voit le compteur.*/
//echo $counter . ' téléchargements environ.';//Ligne B
}
else {
$counter++;
counting($counter);
echo $counter;
}
?>
Merci à tous pour vos réponses.
jp
Le #26532804
Le Tue, 10 Dec 2019 11:31:48 +0100, Olivier Miakinen a écrit :
Le 10/12/2019 11:24, Otomatic a écrit :
Peut-être qu'en donnant la quinzaine de lignes qui entourent la
post-incrémentation $a++ et en expliquant pourquoi vous pensez que ça
ne fonctionne pas, nous pourrions voir d'où vient ce problème.

[OUI++]

:)
jp
Le #26532807
Le Tue, 10 Dec 2019 11:24:25 +0100, Otomatic a écrit :
jp
Ok. Merci à tous les deux. Du coup, je ne comprend plus d'où peut venir
le problème, n'étant pas un spécialiste. C'est bizarre quand-même...

Peut-être qu'en donnant la quinzaine de lignes qui entourent la
post-incrémentation $a++ et en expliquant pourquoi vous pensez que ça ne
fonctionne pas, nous pourrions voir d'où vient ce problème.

Merci pour la réponse. J'ai posté le script un peu plus bas dans ce fil.
Didier
Le #26532824
Le 10/12/2019 à 12:14, jp a écrit :
Le Tue, 10 Dec 2019 11:30:38 +0100, Olivier Miakinen a écrit :
Le 10/12/2019 03:33, jp a écrit :
Bonjour, en php4 $a++ fonctionnait et avec php7 je suis obligé de faire
$a = $a + 1. Quelqu'un sait pourquoi?

La variable s'appelle $a ou $variable ou encore autre chose ? Ce n'est
pas le même problème qu'avec count qui est devenu un mot-clé ?

Pour la fonction que je nommais count(), j'ai compris comment je me suis
trompé. J'avais un script assez ancien qui utilisait une fonction vues().
En voulant reprendre ce script pour autre chose assez similaire, je l'ai
renommée count(). Je ne savais pas que c'était un mot réservé. Du coup ça
ne marchait plus et je ne comprenais pas pourquoi...
Dans le cas présent, c'est toujours le même script et la variable
s'appelle $counter. La post-incrémentation ne fonctionne pas. J'ai mis un
moment avant de savoir d'où venait l'erreur mais j'ai résolu le problème
en faisant $counter = $counter + 1;
Voici le petit script:
<?php
$counter = 0;
$ip = getenv("REMOTE_ADDR");
function counting($counter) {
$fp = fopen('download_counter.txt', 'w');
if ($fp) {
fwrite($fp, $counter);
fclose($fp);
}
}
$fp = fopen('download_counter.txt', 'r');
if ($fp) {
$counter = fgets($fp, 20);
fclose($fp);
if ( ($ip != 'MonIP') && ($ip != '127.0.0.1') ) {
$counter = $counter + 1;//C'est ici que $counter++ ne fonctionne pas...
counting($counter);
}
/*Affiche le compteur seulement quand c'est le webmaster qui se connecte.
=> décommenter la ligne A et mettre en commentaire la ligne B*/
else { echo $counter . ' téléchargements au moins.'; }//Ligne A
/*Affiche le compteur tout le temps => mettre en commentaire la ligne A
et décommenter la ligne B pour que tout le monde voit le compteur.*/
//echo $counter . ' téléchargements environ.';//Ligne B
}
else {
$counter++;
counting($counter);
echo $counter;
}
?>
Merci à tous pour vos réponses.

Bjr,
Je sais qu'on ne peut pas gagner à tous les coups, mais regarde
peut-être là :
https://www.php.net/manual/fr/internals2.counter.counter-class.php
Didier.
Publicité
Poster une réponse
Anonyme