par
jpaul » 28 juil. 2006, 14:43
Effectivement, ça marche, mais j'arrive pas à tout décortiquer là dedans. Je brainstorm !
En fait l'idée c'est de modifier les tableaux :
$buteursVotes = array ("papin", "boli", "boli", "makelele");
$buteursReels = array ("papin", "boli", "zidane");
en :
$bv=array("boli1" => "boli", "boli2" => "boli", "makelele1" => "makelele", "papin1" => "papin");
$br=array("boli1" => "boli", "papin1" => "papin", "zidane1" => "zidane");
Ca blinde la comparaison pusique les cles deviennent uniques (et comparables).
J'ai rajouté quelques commentaires, si ça peut t'aider.
Je ne doute pas qu'il y ait plus simple mais je n'ai pas trop de temps à consacrer et puis faut bien que je te laisse écrire ton code, tu trouveras probablement toi même.
(Une idée c'est de mettre 0 dans le tableau à la place du nom des joueurs, si les contenus de $bv et $br sont identiques, c'est bon : seuls les indices sont utilisés...)
// Déclaration des tableaux
$buteursVotes = array ("papin", "boli", "boli", "makelele");//buteurs votés pour l'équipe A
$buteursReels = array ("papin", "boli", "zidane");//buteurs réels pour l'équipe A
//Tri des tableaux
sort($buteursVotes);
sort($buteursReels);
// petite vérif...
echo "<pre>";
echo "\n\rbuteursVotes : ";
print_r($buteursVotes);
echo "\n\rbuteursReels : ";
print_r($buteursReels);
echo "</pre>";
// on construit le tableau $bv
echo "<BR>lecture buteursVotes";
foreach($buteursVotes as $k => $v) {
// On initialise/complete avec la variable du nom_du_joueur
${$v}[count(${$v})]=$v;
// count(${$v}) indique le xieme but (0, 1, 2, 3...)
// on renseigne le tableau d'indice nom concaténé avec xieme_but
$bv[$v.count(${$v})]=$v;
}
// on remet a zero les tableaux temporaires (nom_du_joueur) utilisés
foreach($buteursVotes as $k => $v) {
unset(${$v});
}
// on construit le tableau $br de même
echo "<BR>lecture buteursReels";
foreach($buteursReels as $k => $v) {
${$v}[count(${$v})]=$v;
$br[$v.count(${$v})]=$v;
}
// on a maintenant des des tableaux indexéx [nom_du_joueur xieme_but]
// petite verif...
echo "<pre>";
echo "\n\rbv : ";
print_r($bv);
echo "\n\rbr : ";
print_r($br);
echo "</pre>";
// reste plus qu'a comparer
echo "<HR>array_intersect_assoc<BR>";
$result = array_intersect_assoc ($bv, $br);
print_r($result);
[quote="jay64"]
Effectivement, ça marche, mais j'arrive pas à tout décortiquer là dedans. Je brainstorm ![/quote]
En fait l'idée c'est de modifier les tableaux :
[php]$buteursVotes = array ("papin", "boli", "boli", "makelele");
$buteursReels = array ("papin", "boli", "zidane");[/php]
en :
[php]$bv=array("boli1" => "boli", "boli2" => "boli", "makelele1" => "makelele", "papin1" => "papin");
$br=array("boli1" => "boli", "papin1" => "papin", "zidane1" => "zidane");[/php]
Ca blinde la comparaison pusique les cles deviennent uniques (et comparables).
J'ai rajouté quelques commentaires, si ça peut t'aider.
Je ne doute pas qu'il y ait plus simple mais je n'ai pas trop de temps à consacrer et puis faut bien que je te laisse écrire ton code, tu trouveras probablement toi même.
(Une idée c'est de mettre 0 dans le tableau à la place du nom des joueurs, si les contenus de $bv et $br sont identiques, c'est bon : seuls les indices sont utilisés...)
[php]// Déclaration des tableaux
$buteursVotes = array ("papin", "boli", "boli", "makelele");//buteurs votés pour l'équipe A
$buteursReels = array ("papin", "boli", "zidane");//buteurs réels pour l'équipe A
//Tri des tableaux
sort($buteursVotes);
sort($buteursReels);
// petite vérif...
echo "<pre>";
echo "\n\rbuteursVotes : ";
print_r($buteursVotes);
echo "\n\rbuteursReels : ";
print_r($buteursReels);
echo "</pre>";
// on construit le tableau $bv
echo "<BR>lecture buteursVotes";
foreach($buteursVotes as $k => $v) {
// On initialise/complete avec la variable du nom_du_joueur
${$v}[count(${$v})]=$v;
// count(${$v}) indique le xieme but (0, 1, 2, 3...)
// on renseigne le tableau d'indice nom concaténé avec xieme_but
$bv[$v.count(${$v})]=$v;
}
// on remet a zero les tableaux temporaires (nom_du_joueur) utilisés
foreach($buteursVotes as $k => $v) {
unset(${$v});
}
// on construit le tableau $br de même
echo "<BR>lecture buteursReels";
foreach($buteursReels as $k => $v) {
${$v}[count(${$v})]=$v;
$br[$v.count(${$v})]=$v;
}
// on a maintenant des des tableaux indexéx [nom_du_joueur xieme_but]
// petite verif...
echo "<pre>";
echo "\n\rbv : ";
print_r($bv);
echo "\n\rbr : ";
print_r($br);
echo "</pre>";
// reste plus qu'a comparer
echo "<HR>array_intersect_assoc<BR>";
$result = array_intersect_assoc ($bv, $br);
print_r($result);[/php]