A propos du tuto sur les fonctions...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : A propos du tuto sur les fonctions...

par Truc » 19 mars 2006, 17:50

que fait-on d'autre quand on écrit ceci ?

while(list(,$val)=each($tab))
{
     ...
}
Dans ce cas tu ne récupères que le 2ème élément du tableau $tab que tu affactes à $val.

Et pour cette "astuce" elle ne fonctionne pas avec les fonctions. sinon tu n'aurais pas de message d'erreur interdisant 2 virgules qui se suivent. :wink:

par didgar » 19 mars 2006, 17:34

Salut !
Perso je pense pas que "l'astuce" de la virgule fonctionne. Les arguments par défaut sont en fin de liste de paramètres.
Mes arguments ayant une valeur par défaut sont aussi en fin de liste. Ce qui m'intéresse c'est d'atteindre mon troisième et mon cinquième arguments pour qu'ils aient une valeur autre que celle par défaut. En même temps, je souhaite que mon quatrième argument aie LUI la valeur par défaut !!!

Ce que j'écris
ma_fonction('je',"m'appelle",'marcel',,'junior');
Concernant l'astuce de la virgule, que fait-on d'autre quand on écrit ceci ?

while(list(,$val)=each($tab))
{
     ...
}
Tu peux regarde CECI (bas de page) :wink:
Merci pour le lien. Visiblement pas d'info sur l'astuce de la virgule ;-)

A+

Didier

par Truc » 19 mars 2006, 17:03

Perso je pense pas que "l'astuce" de la virgule fonctionne. Les arguments par défaut sont en fin de liste de paramètres.

Tu peux regarde CECI (bas de page) :wink:

par didgar » 19 mars 2006, 16:40

Salut !
je te dirais de ne pas chercher midi à 14h, retourne tout simplement les paramètres :wink:
Ca j'avais bien compris ;-)

Mais si on complique un peu ?

Soit une fonction et son appel :
<?php

function ma_fonction($arg1,$arg2,$arg3opt='toto',$arg4opt='titi',$arg5opt='tata')
{
	echo 'arg1 -> '.$arg1.'<br />';
	echo 'arg2 -> '.$arg2.'<br />';
	echo 'arg3 -> '.$arg3opt.'<br />';
	echo 'arg4 -> '.$arg4opt.'<br />';
	echo 'arg5 -> '.$arg5opt.'<br />';
}

ma_fonction('je',"m'appelle",'marcel','dugenou','junior');
?>
Tel que, ça fonctionne.

Par contre, si l'appel devient :
ma_fonction('je',"m'appelle",'marcel',,'junior');
La quatrième paramètre ayant disparu, il devrait être remplacé par sa valeur par défaut [ titi ] non ?

Ouala la vraie question !

A+

Didier

PS : je ne souhaite bien sur pas modifier l'ordre des arguments !

par Truc » 19 mars 2006, 01:16

je te dirais de ne pas chercher midi à 14h, retourne tout simplement les paramètres :wink:
function dire_texte($qui,$texte = 'Bonjour')
appel:
dire_texte("nom_nom");
2eme appel:
dire_texte("nom_nom","Salut");

par didgar » 19 mars 2006, 00:32

Salut !
Tu peux mettre : dire_texte(, "nom_nom");
Chez moi, l'astuce ci-dessus avec la fonction ci-dessous ...
function dire_texte($texte = 'Bonjour', $qui){
if(empty($qui))
{ // $qui est vide, on retourne faux
return false;
}else{
echo $texte . ' ' . $qui; // on affiche le texte
return true; }// fonction exécutée avec succès
}
... me donne un parse error !
Parse error: parse error, unexpected ',', expecting ')' in .../... on line 12

Une idée ??

A+

Didier

re:

par albius » 03 mars 2006, 11:37

Ok, merci bien.

Re: re:

par heddicmi » 03 mars 2006, 11:30

Bonjour,

Donc, si j'ai bien compris ta réponse, je place (nécessairement) en premier le (ou les) paramètres obligatoires et les optionnels en second (?)
merci,
nécessairement, pas forcément.. C'est toi qui veux... Mais si tu veux appeller ta fonction en ne transmettant que les paramètres obligatoires, alors oui !

par Hermès » 03 mars 2006, 10:52

Dans le cas de ta fonction, c'est le premier paramètre qui est optionnel vu qu'il a une valeur assignée par défaut ("Bonjour").

Donc soit tu fais l'appel de heddicmi : dire_texte(, "tout le monde"), soit dans la fonction tu changes l'ordre des paramètres pour pouvoir l'appeler avec dire_texte("tout le monde").

Par contre ce n'est pas $qui qui est optionnel. Le fait qu'il y ait un test empty($qui) vérifie juste si $qui == ""

re:

par albius » 03 mars 2006, 10:32

Bonjour,

Donc, si j'ai bien compris ta réponse, je place (nécessairement) en premier le (ou les) paramètres obligatoires et les optionnels en second (?)
merci,

par heddicmi » 02 mars 2006, 17:31

pas réllement en faite...

il est optionnel, donc tu n'as pas besoin de le préciser, il prendra la valeur par défaut. Mais il faut cependant respecter l'autre des paramètres.

Ici, tu appelles la fonction avec 1 seul paramètre. Du coup, il l'interprète comme étant destiné pour la valeur de $texte...

Tu peux mettre : dire_texte(, "nom_nom");

Par contre, si la fonction était définis comme ceci :
function dire_texte($qui, $texte="Bonjour")
Alors, tu pourrais l'appeller en ne précisant qu'un paramètre... Le 1er correspondant à $qui...

Malgré l'optionnalité, il faut respecter l'ordre des paramètres ;)

A propos du tuto sur les fonctions...

par albius » 02 mars 2006, 17:25

Bonjour,

Je m'essaye sur votre tutoriel sur les fonctions mais j'ai des difficultés:
Je reprends le premier exemple de donné:
function dire_texte($texte = 'Bonjour', $qui){
if(empty($qui))
{ // $qui est vide, on retourne faux
return false;
}else{
echo $texte . ' ' . $qui; // on affiche le texte
return true; }// fonction exécutée avec succès
}
J'ai créé un autre fichier sur lequel j'appelle cette fonction:
require("fonctions.inc.php");
dire_texte("mon_nom"); ?>
Le serveur me renvoit :

Code : Tout sélectionner

"Warning: Missing argument 2 for dire_texte() in c:\program files\easyphp1-8\www\fonctions.inc.php on line 62"
J'avoue ne pas comprendre d'autant plus que dans les explications données, il est dit que
"Certains arguments peuvent être optionnels, lorsqu' une valeur par défaut leur a été donnée. Dans l'exemple précédent, $qui est obligatoire, alors que $texte est optionnel"
Je devrais voir donc s'afficher 'bonjour mon_nom' (?)

Merci,