Aller au contenu

Fonction, retourner plusieurs valeurs


Poppy

Sujets conseillés

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 ;)

Lien vers le commentaire
Partager sur d’autres sites

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").

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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é par TheRec
Lien vers le commentaire
Partager sur d’autres sites

[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 :P [/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 :fou:

tiens nous au courant sur la solution choisie

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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) :lol:

Modifié par TheRec
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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é par portekoi
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...