Php : probleme simple

Résolu/Fermé
JessayeDeTrouver Messages postés 270 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 4 mai 2012 - 24 déc. 2009 à 12:31
serpan2 Messages postés 178 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 10 juin 2015 - 24 déc. 2009 à 13:45
Bonjour, j'ai un petit problème, je n'arrive pas à exécuter une fonction toute simple.

D'abord je vous montre le petit code, et ensuite je vos explique

<?php

/*Au départ je crée une variable nommée $v qui est égale à 1:*/
$v=1;


/*Ensuite je crée une fonction nommée incrementer() qui va
tout simplement incrémenter de 1 la variable $v mis en paramètre*/
function incrementer($v)
{$v++;}

/*Ensuite on exécute la fonction incrementer():*/
incrementer($v); // donc normalement, après exécution de la fonction incremente(), $v doit étre égal à 2.



/*Ensuite on re-exécute la fonction incrementer(), sachant qu'on sait que $v est égal à 2:*/
incrementer($v); // donc normalement, après exécution de la fonction incremente(), $v doit étre égal à 3.


/*Ensuite on vérifie le résultat de $v:*/
echo"$v"; // C'est là ou j'ai un problème, car ça m'affiche 1 au lieu de 3.

?>


Donc, comme vous le voyez, au final $v vaut 1 au lieu de 3,
je voudrais savoir ou est l(es) erreur(s) ?

Merci, bien à vous.
A voir également:

7 réponses

serpan2 Messages postés 178 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 10 juin 2015 6
24 déc. 2009 à 12:37
Bonjour,
c normal :))) ou est la return de $v dans la fonction ??!!

function incrementer ($v)
{
$v++;
return $v;
}

et n'oublie pas que dans ton code il ya l'initialisation de $v = 1;
càd ça peut te donner tjrs 2 :))
A+
0
JessayeDeTrouver Messages postés 270 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 4 mai 2012 47
24 déc. 2009 à 12:42
J'ai mis le return comme tu m'as dit, mais ça ne marche pas ;(

<?php

/*Au départ je crée une variable nommée $v qui est égale à 1:*/
$v=1;


/*Ensuite je crée une fonction appelée incrementer() qui va
tout simplement incrémenter de 1 la variable $v mis en paramètre*/
function incrementer($v)
{
$v++;
return $v;
}

/*Ensuite on exécute la fonction incrementer():*/
incrementer($v); // donc normalement, après exécution de la fonction incremente(), $v doit étre égal à 2.



/*Ensuite on re-exécute la fonction incrementer(), sachant qu'on sait que $v est égal à 2:*/
incrementer($v); // donc normalement, après exécution de la fonction incremente(), $v doit étre égal à 3.


/*Ensuite on vérifie le résultat de $v:*/
echo"$v"; // C'est là ou j'ai un problème, car ça m'affiche 1 au lieu de 3.



?>
0
serpan2 Messages postés 178 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 10 juin 2015 6
24 déc. 2009 à 12:47
essaye de copier coller ce code et dis donne moi le resulta:

<?
function incrementer($v)
{
$v++;
return $v;
}

$v = 1;
$resultat = incrementer($v);
echo $resultat;

?>
0
JessayeDeTrouver Messages postés 270 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 4 mai 2012 47
24 déc. 2009 à 13:10
merci beaucoup !!!, ça marche !!!!

mais maintenant, je crée une 2ème variable $w qui, au départ vaut 5.
Et on fait une petite modification à la fonction incrementer() : on incrémente aussi de 1 la variable $w.
Donc si on met $v et $w en paramètres de la fonction incrementer(), est-ce que ça va marcher aussi ?
Car, j'ai essayé, mais ça n'a pas marché, pourquoi ?

Voici le code :

<?php

/*Au départ je crée 2 variables nommées $v et $w qui vaut respectivement 1 et 5:*/
$v=1;
$w=5;

/*Ensuite je crée une fonction appelée incrementer() qui va
tout simplement incrémenter de 1 la variable $v et la variable $w mis en paramètre*/
function incrementer($v,$w)
{
$v++;
$w++;
return $v;
return $w;
}

/*Ensuite on exécute la fonction incrementer():*/
$v=incrementer($v,$w); // donc normalement, après exécution de la fonction incremente(), $v doit étre égal à 2.
$w=incrementer($v,$w); // donc normalement, après exécution de la fonction incremente(), $w doit étre égal à 6.


/*Ensuite on re-exécute la fonction incrementer(), sachant qu'on sait que $v est égal à 2, et $w est égal à 6:*/
$v=incrementer($v,$w); // donc normalement, après exécution de la fonction incremente(), $v doit étre égal à 3.
$w=incrementer($v,$w); // donc normalement, après exécution de la fonction incremente(), $w doit étre égal à 7.

/*Ensuite on vérifie le résultat de $v et de $w:*/
echo"$v"; // Là, c'est ok, c'est bien égal à 3.
echo"<br>$w"; // Là, il y a un problème que ça affiche 4 au lieu de 7

?>


Donc, comme vous le voyez, au final $w vaut 4 au lieu de 7,
je voudrais savoir ou est l(es) erreur(s) ?

Merci, bien à vous.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
serpan2 Messages postés 178 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 10 juin 2015 6
24 déc. 2009 à 13:21
voila comment faire et j'espere que tu vas pas cree un autre compteur ;))
puisque ta foncton va retouner 2 variales (plus que 1 variable) alors tu dois les retouner
dans un tableau comme suit:

function incrementer($v,$w)
{
$v++;
$w++;
return array ($v, $w);
}

et apres tu les récuperent de cette façon

$resultat = incrementer($v,$w);
echo "$resultat[0] - $resultat[1]";

qui sont respectivement $v et $w;
0
JessayeDeTrouver Messages postés 270 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 4 mai 2012 47
24 déc. 2009 à 13:40
Merci beaucoup !!!, ça marche !!!!

mais maintenant, je crée une 3ème variable $x qui, au départ vaut 10.
... NAN, JE RIGOLE ....

En tous cas, merci beaucoup pour ton aide et ta patience, que la vie te récompense.

Merci encore.

Résolu
0
serpan2 Messages postés 178 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 10 juin 2015 6
24 déc. 2009 à 13:45
pas de quoi ;) et merci à toi aussi. je t'offre cette citation :

Il en est des livres comme du feu de nos foyers; on va prendre ce feu chez son voisin, on l’allume chez soi, on le communique à d’autres, et il appartient à tous.
0