Fonction retournant un tableau en PHP

Fermé
Condor - 3 avril 2001 à 14:32
 PhP - 3 avril 2001 à 18:39
en PHP il n'existe pas de passage d'arguments par reference, exact ? comment alors faire retourner un tableau a une fonction ? simplement return $NomDuTableau ?

De meme comment passer en argument un tableau a une fonction ? comme une variable scalaire ?

Je sais que je me pose peut-etre des faux problemes mais dans mon esprit un tableau créé a l'interieur d'une fonction disparait quand celle-ci retourne (je programme essentiellement en C). est-ce different en PHP ?
A voir également:

1 réponse

Salut Condor

Désolé de te contredire mais on peut passer des variables par référence avec PHP

Ex (tiré de la doc PHP)
function foo (&$var) {
$var++;
}
$a=5;
foo ($a);

$a vaut 6

Il suffit de préfixer le paramètre avec le caractère &




Extrait de la doc PHP :

9.5.2.1 Passage d'arguments par référence
[Notes en ligne] [Exemples]
Par défaut, les arguments sont passés à la fonction par valeur (donc vous pouvez changer la valeur d'un argument dans la fonction, cela ne change pas sa valeur à l'extérieur de la fonction). Si vous voulez que vos fonctions puisse changer la valeur des arguments, vous devez passer ces arguments par référence.
Si vous voulez qu'un argument soit toujours passé par référence, vous pouvez ajouter un '&' devant l'argument dans la déclaration de la fonction :

function add_some_extra(&$string) {
$string .= ', et un peu plus.';
}
$str = 'Ceci est une chaîne';
add_some_extra($str);
echo $str; // affiche 'Ceci est une chaîne, et un peu plus.'


Si vous souhaitez passer une variable par référence à une fonction mais de manière ponctuelle, vous pouvez ajouter un '&' devant l'argument dans l'appel de la fonction:

function foo ($bar) {
$bar .= ', et un peu plus.';
}
$str = Ceci est une chaîne';
foo ($str);
echo $str; // affiche 'Ceci est une chaîne'
foo (&$str);
echo $str; // affiche 'Ceci est une chaîne, et un peu plus.'


Pour les tableaux je pense qu'ils sont tjrs passer par référence (j'espère pour la pile en tout cas) mais je n'ai pas fait de test.

Tient moi au courant

@+

Philippe



0