Fonction PHP

Jon1988
Invité n'ayant pas de compte PHPfrance

23 mars 2011, 00:53

Bonjour, je dois créé une fonction pour mon cour de PHP. Je ne sais pas ce qui me manque, mais le fureteur n'affiche rien.

Voici ce que je dois réaliser:
Créer un fichier nommé exercicePratique2.php dans lequel vous allez créer une fonction nommée fusion_trie($tableau1, $tableau2) prenant deux tableaux en paramètre et qui retourne un tableau. Le rôle de cette fonction est de fusionner ensemble deux tableaux ainsi que de trier ce tableau résultant. Vous devez vérifier que chaque argument de la fonction soit un tableau avant de faire quoi que ce soit. Si un des arguments n'est pas un tableau, affichez un message d'erreur à l'écran.

Voici le codage que j'ai fais jusqu'à maintenant:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<?php
function fusion_trie($tableau1,$tableau2)
{
$tableau1=array('jonathan','alexandre','mathieu');
$tableau2=array('marc','raymond','louis');
	if (is_array($tableau1)){

echo $tableau1;

}else{

echo 'Le tableau1 n’est pas un tableau';

}
	if (is_array($tableau2)){

echo $tableau2;

}else{

echo 'Le tableau2 n’est pas un tableau';

}
$tableau3 = array_merge($tableau1,$tableau2);
sort($tableau3);
print_r($tableau3);
}
return ($tableau3)
?>
<body>
</body>
</html>

Eléphant du PHP | 241 Messages

23 mars 2011, 01:44

Bonsoir,
le return ($tableau3); doit être dans la fonction !

EDIT: en fait y a pleins d'erreurs dans la fonction ^^'

Si tu n'appelle pas la fonction elle n'affichera rien effectivement...
pour appeler la fonction rien de plus simple, tu écris le nom de la fonction, dans ton cas cela donnera :
function ma_fonction()
{
	echo "ceci est un texte !";
}

//plus loin dans le code

ma_fonction();
//Affichera : ceci est un texte !
Ensuite, fait attention à tes if, même si les tableaux n'en sont pas, tu fais le reste du traitement (array_merge etc.), ce qui donnera une erreur php :wink:

jon1988
Invité n'ayant pas de compte PHPfrance

23 mars 2011, 06:00

Merci beaucoup :)

devlop78
Invité n'ayant pas de compte PHPfrance

23 mars 2011, 19:45

Juste par précision, il est préférable d'utiliser return que return (), car il s'agit d'une structure de langage. Au delà de la performance, return () ne permettrait pas le retour avec référence (voir doc)

jon1988
Invité n'ayant pas de compte PHPfrance

27 mars 2011, 16:51

Jusqu'a maintenant, j'ai cela.

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <?php function fusion_trie($tableau1,$tableau2,$tableauUni) { $tableau1=array('jonathan','alexandre','mathieu'); $tableau2=array('marc','raymond','louis'); $tableauUni = array_merge($tableau1,$tableau2); print_r($tableauUni); if (is_array($tableau1)){ echo $tableau1; }else{ echo 'Le tableau1 n’est pas un tableau'; } if (is_array($tableau2)){ echo $tableau2; }else{ echo 'Le tableau2 n’est pas un tableau'; } if (is_array($tableauUni)){ s echo $tableauUni; }else{ echo 'Le tableauUni n’est pas un tableau'; } sort($tableauUni); return fusion_trie($tableau1,$tableau2,$tableauUni); } ?> <body> </body> </html>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 mars 2011, 17:03

heu tu a testé ta fonction ?

quand on lit l'énoncé
Vous devez vérifier que chaque argument de la fonction soit un tableau avant de faire quoi que ce soit. Si un des arguments n'est pas un tableau, affichez un message d'erreur à l'écran.
et que l'on regarde ton code, il n'y a pas correspondance.

Il faut commencer par vérifier le type des variables passées en paramètre de la fonction et ensuite faire le tri (quel type de tri ? et retourner un tableau).

ce qui peu donner
<?php
function fusion_trie($tableau1,$tableau2) {
	if (is_array($tableau1) && is_array($tableau2)) {
		$ret = array_merge($tableau1,$tableau2);
		return sort($ret);
	}
	else {
		echo 'Les deux paramètres doivent êtres des tableaux';
		return false;
	}
}
?>
Après faut voir s'il faut des messages d'erreurs précis, si c'est la fonction qui doit afficher le message d'erreur etc

Lorsque tu ton code suis l’énoncé (il est assez précis), quand ce n'est pas le cas couche sur papier les étapes a suivre (quitte a faire un diagramme) et a partir de la le code coule de source ;)

@+
Il en faut peu pour être heureux ......

Jon1988
Invité n'ayant pas de compte PHPfrance

28 mars 2011, 18:34

C'est bien le diagramme, je n'y avais pas penser, merci!

Merci pour les explications, j'apprecie!