Poppy Posté 14 Septembre 2005 Posté 14 Septembre 2005 Bonsoir Comment faire pour retourner plusieurs valeurs avec une seule fonction ? Un tableau ? autre solution ? Merci d'avance
TheRec Posté 14 Septembre 2005 Posté 14 Septembre 2005 Bonsoir, oui, un tableau est la bonne solution... ou tu peux séparer les valeurs avec un séparateur comme ";" et retourner une chaîne de caractères. Et ensuite tu utiliserais la fonction implode ... mais cela a un intérêt limité... vu que tu te retrouverais avec un tableau également
MarvinLeRouge Posté 14 Septembre 2005 Posté 14 Septembre 2005 Le tableau me semble être la solution la plus simple. Testé et approuvé par moi. Sinon, il te reste l'objet (mais ça suppose une réelle approche objet), ou l'utilisation des variables superglobales (mais je trouve que ça fait pollution, et "marteau à mouches").
petit-ourson Posté 14 Septembre 2005 Posté 14 Septembre 2005 (modifié) En passant des parametres a ta fonction par référence. Modifié 14 Septembre 2005 par petit-ourson
e.MiLoU Posté 14 Septembre 2005 Posté 14 Septembre 2005 En passant des parametres a ta fonction par référence. <{POST_SNAPBACK}> ?? Peux-tu donner un exemple de code??
Anonymus Posté 14 Septembre 2005 Posté 14 Septembre 2005 function foo(&$var){$var++;}$a=0;foo($a);// $a == 1 (ps : peux pas faire plus rapide )
petit-ourson Posté 14 Septembre 2005 Posté 14 Septembre 2005 Et la doc php : http://fr.php.net/manual/fr/language.references.pass.php
e.MiLoU Posté 14 Septembre 2005 Posté 14 Septembre 2005 Mm... Je ne suis pas ur que tu aies bien compris la question... ou alors c'est moi...
petit-ourson Posté 14 Septembre 2005 Posté 14 Septembre 2005 (modifié) La question de poopy ? Modifié 14 Septembre 2005 par petit-ourson
e.MiLoU Posté 14 Septembre 2005 Posté 14 Septembre 2005 Oui. Je crois qu'il voulait faire quelque chose du genre function mafunction() { return $1; return $2; return $3; } Enfin... si j'ai bien compris
petit-ourson Posté 14 Septembre 2005 Posté 14 Septembre 2005 function foo(&$varune, &$vardeux, &$vartrois){$varune++;$vardeux++;$vartrois++;}$varune = 0;$vardeux = 0;$vartrois = 0;foo($varune,$vardeux,$vartrois); Ca donnera un pour les 3 variables. On fait cela dans la quasi totalité des langages de programmation.
TheRec Posté 14 Septembre 2005 Posté 14 Septembre 2005 (modifié) Oui ... mais comme l'a demandé Poppy : Comment faire pour retourner plusieurs valeurs avec une seule fonction ? <{POST_SNAPBACK}> Il souhaite une fonction... et pas une procédure... pour rappel, une fonction retourne une valeur, une procédure ne retourne pas de valeur (mais elle peut les utiliser, voir même le modifier avec des paramètre en référence). La syntaxe de déclaration d'une fonction et d'une procédure est la même en PHP, mais le fonctionnement défini à quoi elles correspondent... Je pinaille un peu... pardon Modifié 14 Septembre 2005 par TheRec
rportal Posté 15 Septembre 2005 Posté 15 Septembre 2005 [HS]C'est clair tu pinailles et je crois que la sémantique, Poppy, n'en a pas grand chose à faire, il veut un truc qui fonctionne [/HS] Poppy, toutes les solutions ont été proposées: tableau, objet et passage par référence. A toi de choisir. Quoi qu'il en soit il ne peut y avoir q'un seul return qui soit exécuté dans une fonction tiens nous au courant sur la solution choisie
TheRec Posté 15 Septembre 2005 Posté 15 Septembre 2005 Bonjour, oui, je suis aussi intéressé de savoir quel solution tu as choisie. Pour t'aider dans ta décision, sache que le passage de paramètres par référence (&$var) comporte toutefois un risque d'effets de bord. PHP le prévient correctement en ne permettant que l'utilisation de variables lors de l'appel de la fonction lors que le paramètre est passé par "référence", mais il est possible d'utiliser des fonction pour modifier les paramètres lors de l'appel de la fonction... mais pour une application simple il ne devrait pas y avoir de problème.
Anonymus Posté 15 Septembre 2005 Posté 15 Septembre 2005 A noter, histoire d'alimenter le sujet, que les fichiers en 'include' se comportent comme des 'fonctions', dans le sens où il est possible de placer un 'return' en plein milieu : fichier inclus : <?$a=1;return;$a++;?> inclure ce fichier retournera toujours $a=1, et l'instruction $a++; ne sera jamais exécutée. Pour info, une fonction telle que donnée par Petit Ourson peut très bien retrourner quelque chose : function foo(&$varune, &$vardeux, &$vartrois){$varune++;$vardeux++;$vartrois++;return $varune;}$varune = 0;$vardeux = 0;$vartrois = 0;foo($varune,$vardeux,$vartrois); A mon (humble) avis, Php est beaucoup trop permissif pour que l'on puisse réellement faire une différence entre une fonction et une procédure.
petit-ourson Posté 15 Septembre 2005 Posté 15 Septembre 2005 Une fonction, c'est une procédure qui retourne une valeur ? ou Une procédure, c'est une fonction qui ne retourne pas de valeur ? Hum quelle question ;o)
Portekoi Posté 15 Septembre 2005 Posté 15 Septembre 2005 En Asp, il y a les 2 notions : Function -> renvoie un résultat Sub -> Ne renvoie rien En php, Function renvoie ou non une variable
TheRec Posté 15 Septembre 2005 Posté 15 Septembre 2005 (modifié) Mais si on peut faire la différence entre procédure et fonction... et c'est comme je l'ai indiqué précédemment. Une procédure ne renvoie pas de valeur, une fonction si. Simplement l'implémentation de ces entités n'est différenciée au niveau de la syntaxe... c'est une principe de programmation, un sous-programme retourant une valeur est appelé une fonction et un sous-programme n'en retournant pas s'appelle une procédure. Au sens propre PHP ne s'occupe que de "fonctions"... mais il est logique de faire une différence entre ces deux entités, simplement pour savoir s'il faut récupérer une valeur ou non... enfin ce n'est que détail. Personnellement je préconise toujours le tableau pour retourner plusieurs variables, pour éviter les effets de bords...mais ça n'engage que moi **EDIT** Petit parallèle mathématique, une fonction retourne toujours une valeure, sinon ce n'est pas une fonction... (c'est de la que vient le nom de "fonction" au passage) Modifié 15 Septembre 2005 par TheRec
loufoque Posté 16 Septembre 2005 Posté 16 Septembre 2005 En Asp, il y a les 2 notions En VBScript tu veux dire.
Portekoi Posté 16 Septembre 2005 Posté 16 Septembre 2005 On peut chipoter Tout le monde, webmaster digne de ce nom, sait que ASP est du VB. Enfin j'espère... Portekoi
rportal Posté 16 Septembre 2005 Posté 16 Septembre 2005 Euh, l'ASP est une technologie serveur qui peut utiliser tous les langages Microsoft (VB, C#, VC++, ...)
Portekoi Posté 16 Septembre 2005 Posté 16 Septembre 2005 Euh, l'ASP est une technologie serveur qui peut utiliser tous les langages Microsoft (VB, C#, VC++, ...) Ah? Je savais pas... On parle bien de ASP et non de .NET qui lui regroupe toutes ces technologies... Tu as site traitant de ce sujet? Faire du C avec ASP, jamais entendu parler.
loufoque Posté 16 Septembre 2005 Posté 16 Septembre 2005 Ce qui est totalement faux, ASP est une interface qui te permet de choisir le langage de programmation que tu souhaites. On peut aussi faire du JScript et depuis ASP.NET du C#.
rportal Posté 16 Septembre 2005 Posté 16 Septembre 2005 tiens un exemple de code C# destiné à être utilisé via ASP: http://developpeur.journaldunet.com/tutori...aires-xml.shtml
Portekoi Posté 16 Septembre 2005 Posté 16 Septembre 2005 (modifié) Notre script ASP.NET a été réalisé en C# C'est du .NET et non de l'ASP @Loufoque : Jscript et VB sont un peu similaire non? Mise à par le ';' et le 'then'... je caricature mais la base est la même désolé. http://www.aspfr.com/code.aspx?ID=30442 Bon, on reviens au sujet? Modifié 16 Septembre 2005 par portekoi
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant