Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2011, 13h06   #1
Invité régulier
 
Inscription : janvier 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 16
Points : 7
Points : 7
Par défaut Aide pour une function

Bonjour à vous,

Phpeur débutant depuis toujours, je ne trouve pas de solution à mon problème. Bien qu'à chaque fois que je me connecte sur developpez.com quelqu'un me trouve la solution, j'attends de tout essayer avant de faire appel à vous. Et là c'est le cas.

J'ai une fonction comme ça :

Code :
1
2
3
4
function Mafonction($chiffre1='12345',$chiffre2='6789',$chiffre3='123',$chiffre4='45')
 
etc
etc
tout fonctionne, mais j'aimerais remplacer les chiffres par une variable récupérée à partir d'un input.

Pourtant, si avant ma fonction je met
Code :
1
2
3
4
5
 
$chiffre1 = '12345';
$chiffre2 = '6789';
etc
function Mafonction($chiffre1,$chiffre2,$chiffre3,$chiffre4)
ça ne marche pas

J'ai même testé comme ça :
Code :
1
2
3
4
5
 
$test1 = '12345';
$test2 = '6789';
etc
function Mafonction($chiffre1=$test1,$chiffre2=$test2,$chiffre3 etc,$chiffre4 etc)
Marche pas non plus.

Merci d'avance pour votre aide
angledroit est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 18/11/2011, 13h23   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Qu'est ce que tu entends par "ne marche pas" ? Pourrais tu être un peu plus... explicite ?

Pour info, il est tout à fait possible d'avoir des paramètres par défaut dans le prototype d'une fonction et de les écraser malgré tout:
Code :
1
2
3
4
5
6
7
8
9
function foobar ($a = 1, $b =2, $c = 3) {
  return $a + $b + $c;
}
 
$a = 2;
$b = 3;
$c = 1;
 
echo foobar($a, $c, $b); // 6
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 14h30   #3
Invité régulier
 
Inscription : janvier 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 16
Points : 7
Points : 7
ok mais ce que je souhaite faire c'est ceci :

Code :
1
2
3
4
5
6
7
 
$a = 1;
$b = 2;
$c = 3;
function Mafunction($a, $b, $c) {
  return $a + $b + $c;
}
que ça retourne 6 dans ce cas.
angledroit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 14h50   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 793
Points : 35 793
Code :
1
2
3
4
5
6
7
8
$a = 1;
$b = 2;
$c = 3;
function Mafunction($a, $b, $c) {
  return $a + $b + $c;
}
$d = Mafunction($a, $b, $c);
var_dump($d);


EDIT : ceci dit, donner les mêmes noms aux variables et aux paramètres de la fonction n'est pas l'idée la plus géniale de l'année, d'autant que ça ne te permet manifestement pas de comprendre la différences entre les deux...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 14h57   #5
Invité régulier
 
Inscription : janvier 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 16
Points : 7
Points : 7
Oui, je pense que mon problème c'est qu'il y a quelque chose de logique dans tout ça que je n'arrive pas à capter.

Bref, je vais travailler avec ce que tu m'as filé.

Merci pour l'aide.

Edit : Ça fonctionne nickel, merci encore.
angledroit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 16h46   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Pour clarifier: les variables qui sont dans le prototype de la fonction, qu'elles aient une valeur par défaut ou non, sont dans le scope (porté) de la fonction. Elles n'ont rien à voir avec les variables du scope parent (global dans notre cas).

Voici un exemple:
Code :
1
2
3
4
5
6
7
8
9
10
11
// Une variable dans le scope global
$a = 1;
 
function foo ($a) {
  // Ici $a n'a rien à voir avec le $a qui est dans le scope global
  // puisque nous somme dans le contexte de la fonction
  echo $a;
}
 
foo(2); // affiche 2
foo($a); // affiche 1
Comme dans d'autres langages, il est possible de passer des paramètres par référence, la même règle en ce qui concerne la porté s'applique:
Code :
1
2
3
4
5
6
7
8
9
10
fonction foo (& $a) {
  $a ++;
}
 
$b = 1;
 
foo($b);
 
echo $b; // 2 puisque la fonction travaille sur une référence à $b 
// mais dans le contexte de la fonction, cette référence s'appelle $a
Enfin, il est possible que les fonction utilisent directement des variables du scope global:
Code :
1
2
3
4
5
6
7
8
9
$a = 1;
function foo () {
  global $a;
  echo $a;
}
 
foo(); // affiche 1
$a = 2;
foo(); // affiche 2
J'espère que c'est plus clair.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/11/2011, 17h53   #7
Invité régulier
 
Inscription : janvier 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 16
Points : 7
Points : 7
ok je comprends.

Je n'avais pas compris qu'une variable dans une fonction n'a rien à voir avec la variable déclarée avant.

Merci pour les explications
angledroit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h03.


 
 
 
 
Partenaires

Hébergement Web