PHP "return" comment mémoriser entre 2 a
Paul_Wi11iams
-
Paul_Wi11iams -
Paul_Wi11iams -
Bonjour,
J'ai une fonction dont la valeur de return est un tableau "$sort". En voici un condensé.
Function cybebase()
{
/*la lecture de quelques lignes dans ma bdd dont une est chargée dans $sort.*/;
/* Je rajoute à $sort, une info, "cybebaseetat" qui servira pour informer la page qui appelle la fonction: */;
$sort[cybebaseetat] = 'sequ';
/* "cybebaseetat" servira aussi au prochain appel à la fonction pour lui dire où il en est dans son travail */;
return $sort;
};
et dans la page je fais: $lign = cybebase();
Pour que la fonction n'oublie pas le contenu de "sort", je suis obligé de le mettre en "global".
Mais à mesure que je crée des modules, il y a des interférences entre les noms. Donc toute occasion pour éliminer un nom en "global" est bienvenue.
J'ai bien vu des fonctions, comme dans MySql qui mémorisent des valeurs entre deux appels.
Ce serait quoi cette solution, autre que "global" ?
Merci d'avance
Paul Williams
J'ai une fonction dont la valeur de return est un tableau "$sort". En voici un condensé.
Function cybebase()
{
/*la lecture de quelques lignes dans ma bdd dont une est chargée dans $sort.*/;
/* Je rajoute à $sort, une info, "cybebaseetat" qui servira pour informer la page qui appelle la fonction: */;
$sort[cybebaseetat] = 'sequ';
/* "cybebaseetat" servira aussi au prochain appel à la fonction pour lui dire où il en est dans son travail */;
return $sort;
};
et dans la page je fais: $lign = cybebase();
Pour que la fonction n'oublie pas le contenu de "sort", je suis obligé de le mettre en "global".
Mais à mesure que je crée des modules, il y a des interférences entre les noms. Donc toute occasion pour éliminer un nom en "global" est bienvenue.
J'ai bien vu des fonctions, comme dans MySql qui mémorisent des valeurs entre deux appels.
Ce serait quoi cette solution, autre que "global" ?
Merci d'avance
Paul Williams
A voir également:
- PHP "return" comment mémoriser entre 2 a
- Supercopier 2 - Télécharger - Gestion de fichiers
- 2 ecran pc - Guide
- Comment faire 2 colonnes sur word - Guide
- Expert php pinterest - Télécharger - Langages
- Whatsapp 2 - Guide
1 réponse
Bonjour,
Il n'est pas possible qu'une fonction se "souvienne" d'une valeur d'une variable locale d'une fois sur l'autre.
Ce que tu peux faire, c'est à chaque fois passer la valeur précédente en paramètre de la fonction :
function cybebase($etatPrecedent = "")
{
...
}
Comme ça, si tu veux qu'elle se souvienne de l'état précédent, il suffit de le lui donner en l'appelant.
Xavier
Il n'est pas possible qu'une fonction se "souvienne" d'une valeur d'une variable locale d'une fois sur l'autre.
Ce que tu peux faire, c'est à chaque fois passer la valeur précédente en paramètre de la fonction :
function cybebase($etatPrecedent = "")
{
...
}
Comme ça, si tu veux qu'elle se souvienne de l'état précédent, il suffit de le lui donner en l'appelant.
Xavier
Merci pour l'info ! Paul Williams.
Mais quand tu fais un mmysql_query, tu en stockes le résultat quelque part :
$resultat = mysql_query($requete);
Et quand tu fais appel à mysql_fetch_assoc() ou autre, tu lui passes en argument le résultat :
$donnees = mysql_fetch_assoc($resultat);
Ce n'est pas la fonction qui sait où elle en est, c'est l'objet $resultat qui inclut en lui-même un compteur pour savoir quelle est la prochaine ligne !
Voir par exemple http://www.manuelphp.com/php/language.variables.scope.static.php
Cette caractéristique peut être très utile mais doit être utilisée à bon escient et avec parcimonie
Paul Williams