Fonction array_reduce()

Petit nouveau ! | 4 Messages

12 mai 2007, 14:53

Bonjour les amis!
Je suis entrain d'apprendre php5 avec un manuel, mais je bloque à cet exo.

->

<?php
//Définition de la fonction produit
function multi($a,$b)
{
	if($a==0) $a=1;
	return $a*$b;
}
//array_reduce avec deux paramètres
$n=10;
$tabn= range(1,$n);
$prod=array_reduce($tabn, "multi");
echo "<hr>Produit des éléments = factorielle $n = $n! = ",$prod;
//Définition de la fonction de concaténation
function concat($a,$b)
{
	$a.=$b;
	return $a;
}
// array_reduce avec trois paramètres
$tabch= array("messieurs "," Hulot", " et "," Tati");
$chaine=array_reduce($tabch,"concat","Salut à ");
echo "<hr>Concaténation des éléments : ",$chaine;

?>
Le résultat qui met affiché est le suivant
->

Code : Tout sélectionner

Produit des éléments = factorielle 10 = 10! = 3628800 Concaténation des éléments : 0messieurs Hulot et Tati
Alors que le résultat demandé par mon manuel est
->

Code : Tout sélectionner

Produit des éléments = factorielle 10 = 10! = 3628800 Concaténation des éléments : Salut à messieurs Hulot et Tati
:oops: Merci d'avance :idea:

Eléphant du PHP | 259 Messages

12 mai 2007, 15:32

hello,

regarde la notice de array_reduce() sur php.net. Le troisième parametre est prévu pour etre un entier ( ... [int initial] ).

Tu lui donnes une chaine, qui est transformée en entier par PHP, mais comme cette chaine n'est pas composée de chiffres, elle vaut 0.

Petit nouveau ! | 4 Messages

12 mai 2007, 16:57

S'est tout écrit en Anglais et apparament ya pas de version french...
Donc je comprend rien!!!

Eléphant du PHP | 259 Messages

12 mai 2007, 22:18

ah l'anglais est une langue assez intéressante à connnaitre lorsqu'on s'attaque à la programmation ;)

sinon : http://fr2.php.net/manual/fr/function.array-reduce.php

Petit nouveau ! | 4 Messages

13 mai 2007, 02:46

:oops: Merci les copains :oops:

lem
Eléphant du PHP | 108 Messages

14 mai 2007, 09:52

Le français aussi est une langue assez intéressante quand on poste sur un forum. Et pourtant..
Lem.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

14 mai 2007, 10:13

Pour te consoler voici un exemple plus formatif de concaténation par array_reduce.
//Concat pour Table
function getTable($a,$b) 
{ 
    return $a."<tr><td>$b</td></tr>"; 
} 
// array_reduce avec trois paramètres 
$tabch = array("Albert","Hulot", "Toto"," Tati"); 
$liste = array_reduce($tabch, "getTable");
echo "<p><b>Liste de personnes</b><Table border>$liste</Table></p>";

//Concat pour Liste
function getList($a,$b)  
{  
    return $a."<option value='$b'>$b</option>";  
}  
// array_reduce avec trois paramètres  
$tabch = array("Albert","Hulot", "Toto"," Tati");  
$liste = array_reduce($tabch, "getList"); 
echo "<p><b>Liste de personnes</b> <Select name='personne'>$liste</Select></p>";
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène