Modifier les paramètres d'une procédure

Résolu
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010 - 27 févr. 2006 à 12:05
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010 - 27 févr. 2006 à 14:25
Bonjour!
Voici à quelques choses près ce que je veux faire :
<?
function test($texte)
{
$texte="essai";
}
$test="ok";
test($test);
echo $test;
?>

ET ALORS LA VOILA LE PROBLEME !!!
Il m'affiche "ok" au lieu de "test". Comment rectifier ça???
Le but est qu'après je puisse passé un objet en paramètres.
Voilà j'espère avoir été clair.
A bientôt.

6 réponses

aguiran Messages postés 5 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 27 février 2006
27 févr. 2006 à 12:13
Hoy,



Attention, tu prends pas en compte la portée des variables !!

Dans ta fonction test, là où tu as $texte="essai", c'est une variable
locale, donc quand tu en sors, tu n'as pas modifié la varaible
extérieure.



Il faudrait que tu fasses



function test(&$texte) //attention, note bien le & pour le passage par référence

{

$texte="essai";

}



Voilà :o)
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 févr. 2006 à 12:15
Hello,

<?
function test($texte)
{
$texte="essai";
}
$test="ok";
test($test);
echo $test;
?>

2 choses : dans n'importe quel langage, les variables ont une portée.
Dans le cadre de fonctions, une variable déclarée dans une fonction voit sa portée limitée à la fonction.

Bref :
<?php
fonction declareVar () {
$var = 'bla';
}
declareVar ();
echo $var; // provoque une erreur : $var n'est pas définie...
?>

De même avec ton test, tu passes ta variable, certes, mais ta fonction utilise une COPIE de la variable.
On en vient aux passagres par copie et par référence...une copie, est, comme son nom l'indique, une copie lol...ref, ce n'est pas l'original.
Une référence EST l'original (même emplacement mémoire).
donc tu peux faire ceci :
<?
function test(& $texte)
{
$texte="essai";
}
$test="ok";
test($test);
echo $test;
?>

Une autre façon est de retourner ta variable :

<?
function test($texte)
{
return $texte="essai";
}
$test="ok";
$test = test($test);
echo $test;
?>
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
27 févr. 2006 à 13:00
Salut,


autre façon de passer une variable par référence :



<?php

function test($texte)

{

$texte='essai';

}

$test='ok';

test(&$test);

echo $test;

?>


In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
27 févr. 2006 à 13:54
Merci à tous pour votre spontanéité.
C'est vrai que j'ai pas pensé. Pourtant, j'y suis habitué en C mais c'est que je pensais pas que cela puisse s'appliquer au PHP.
En tout cas merci beaucoup.
Je n'ai plus qu'à tester pour mon objet et si ça ne marche pas je vous refais appel.
A+.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
27 févr. 2006 à 13:59
Salut,

fais réponse accèptée stp...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
27 févr. 2006 à 14:25
C'était déjà fait ...
0
Rejoignez-nous