CodeS-SourceS
Rechercher un code, un tuto, une réponse

Php - Liste des combinaisons possibles + somme

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 576 fois - Téléchargée 5 fois

Contenu du snippet

Bonjour,
Suite à une demande sur le forum, j'ai décidé de mettre ce code dans la partie CODES-SOURCES.
 
<html> 
<head><title> Combinaisons + sommes </title> 
<body> 

<?php 
//Exemple sur le tableau suivant : 
$arr = array(12.51, 45.62,10,25.9); 
echo '<pre>'; 
Echo " Array contenant les valeurs à utiliser : <br>"; 
print_r($arr); 
echo '</pre>'; 
// compte le nombre d'éléménts 
$n = count($arr); 

// Tableau de sortie contenant les combinaisons possibles 
 $sortie = array(); 
 // Liste des combinaisons : 
 for($i=1;$i<=$n;$i++) {  
  lstcombinaison(",",$arr,$i); 
 } 

// Calcul des sommes de chaque combinaison 
$tbl_liste_somme=sommeTbl($sortie); 
  

//-------------------------------------------------------------// 
//           AFFICHAGE DU RESULTAT                             // 
//-------------------------------------------------------------// 
echo '<pre>'; 
Echo 'Nb Combinaisons : ' . count($sortie); 
echo '</pre>'; 

echo "<table border=1 cellpading=0 cellspacing=0 collapse='collapse'> 
  <tr><th>COMBINAISON</th><th>SOMME</th> 
  </tr>"; 
for ($l=0;$l<count($tbl_liste_somme);$l++){ 
echo "<tr>"; 
Echo "<td>".$tbl_liste_somme[$l]['combinaison']."</td><td>" . $tbl_liste_somme[$l]['somme'] . "</td>"; 
echo "</tr>"; 
} 
echo "</table>"; 


//-------------------------------------------------------------// 
//                 FONCTIONS                                   // 
//-------------------------------------------------------------// 
function lstcombinaison($debut,$tags,$profondeur) { 
// Script origina (légèrement modifié) : http://www.phpsources.org/scripts317-PHP.htm //
   global $sortie; 
   if($profondeur == 0) { 
      array_push($sortie,$debut); 
      return; 
   } 
   $n = count($tags); 
   for($i=0;$i<$n;$i++) { 
      lstcombinaison($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1); 
   } 
  } 
   
function Factorielle($number){ 
 $retour = 1; 
 if ($number>1) { 
  $retour = Factorielle($number-1); 
 } 
 return $number*$retour; 
} 
  
function sommeTbl($arr){ 
// Calcule la somme de chaque combinaison 
$n = count($arr); 
$tbl_somme = array(); 
 for($i=0;$i<=$n;$i++) {  
  //Combinaison 
  $tbl_somme[$i]['combinaison'] = substr(substr($arr[$i],1),0,-1); 
  //Somme 
  $explode_val=explode(",",$arr[$i]); 
  $sum = array_sum($explode_val); 
  $tbl_somme[$i]['somme'] = $sum; 
  } 
return $tbl_somme; 
}  

?> 
</body> 
</html> 


Ce qui donne par exemple :

 Array contenant les valeurs à utiliser : 
Array
(
    [0] => 12.51
    [1] => 45.62
    [2] => 10
    [3] => 25.9
)

Nb Combinaisons : 15

COMBINAISON SOMME
12.51       12.51
45.62       45.62
10        10
25.9       25.9
12.51,45.62    58.13
12.51,10    22.51
12.51,25.9    38.41
45.62,10    55.62
45.62,25.9    71.52
10,25.9    35.9
12.51,45.62,10    68.13
12.51,45.62,25.9    84.03
12.51,10,25.9    48.41
45.62,10,25.9    81.52
12.51,45.62,10,25.9  94.03
 0


A voir également

Ajouter un commentaire

Commentaires

Donnez votre avis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.