Aller au contenu

Fonction, retourner plusieurs valeurs


Sujets conseillés

Posté

Bonsoir :)

Comment faire pour retourner plusieurs valeurs avec une seule fonction ?

Un tableau ? autre solution ?

Merci d'avance :)

Posté

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

Posté

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

Posté

function foo(&$var){
$var++;
}
$a=0;
foo($a);
// $a == 1

;)

(ps : peux pas faire plus rapide :D )

Posté

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

Posté

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.

Posté (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é par TheRec
Posté

[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

Posté

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.

Posté

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.

Posté

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)

Posté

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

Posté (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) :lol:

Modifié par TheRec
Posté
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.

Posté

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#.

Posté (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é par portekoi

Veuillez vous connecter pour commenter

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



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