Bonjour à vous,
et merci d'avance de l'aide que vous allez pouvoir m'apporter.
J'essai donc de trier un array en réorganisant les données, le probleme est que ca marche pour la plupart des données mais pour certaines soit elles sont balancés aux oubliettes soit elles viennent se mettre dans une categorie qui n'est pas la leurs.
L'array avant tri ressemble à ça:
ensuite, je le tri avec ça (le problème doit donc être quelque part par la) :
et en resultat je me retrouve avec des trucs du genres :
donc voila je vous serez super reconnaissant si vous trouver ce qui cloche.
Moi j'ai fais le tour 5H pas moyen
Yuki
Modifié par Yuk! (15 Sep 2008 - 16:32)
et merci d'avance de l'aide que vous allez pouvoir m'apporter.
J'essai donc de trier un array en réorganisant les données, le probleme est que ca marche pour la plupart des données mais pour certaines soit elles sont balancés aux oubliettes soit elles viennent se mettre dans une categorie qui n'est pas la leurs.
L'array avant tri ressemble à ça:
<?php
$aNormalForums = Array (
0 => Array ('forum_id' => 3, 'cat_id' => 1, 'forum_nom' => 'Titre1'),
1 => Array ('forum_id' => 4, 'cat_id' => 1, 'forum_nom' => 'Titre2'),
2 => Array ('forum_id' => 5, 'cat_id' => 2, 'forum_nom' => 'Titre3'),
3 => Array ('forum_id' => 11, 'cat_id' => 4, 'forum_nom' => 'Titre4'),
4 => Array ('forum_id' => 12, 'cat_id' => 4, 'forum_nom' => 'Titre5'),
5 => Array ('forum_id' => 120, 'cat_id' => 4, 'forum_nom' => 'Titre6'),
6 => Array ('forum_id' => 13, 'cat_id' => 4, 'forum_nom' => 'Titre7'),
7 => Array ('forum_id' => 14, 'cat_id' => 4, 'forum_nom' => 'Titre8'),
8 => Array ('forum_id' => 16, 'cat_id' => 5, 'forum_nom' => 'Titre9'),
9 => Array ('forum_id' => 17, 'cat_id' => 2, 'forum_nom' => 'Titre10'),
10 => Array ('forum_id' => 19, 'cat_id' => 2, 'forum_nom' => 'Titre11'),
)
?>
ensuite, je le tri avec ça (le problème doit donc être quelque part par la) :
<?php
$aCountId = 0; // clé categorie courante
$aCountForum = 0; // clé forum courant
$currentId = ''; // id de la categorie courante
$aSaveCount = Array(); // Format :: id_cat => Array(clé_cat, clé_forum+1)
$aOrderedForums = Array(); // Array qui contiendra les données correctement triées
foreach($aNormalForums as $aForum)
{
// Si la categorie n'est plus la meme
if($currentId != $aForum['cat_id'])
{
// Si c'est la premiere iteration ..
if(empty($currentId))
{
// on met à 0 le compteur de categorie, pareil pour le compteur forum
$aSaveCount[$aForum['cat_id']] = Array(0, 0);
}
else
{
// Si la categorie a pas déja été sauvegardé dans $aSaveCount
if(array_key_exists($aForum['cat_id'], $aSaveCount))
{
// On va chercher dans $aSaveCount la clé de la categorie ainsi que la clé forum
// - et on les mets comme valeurs courantes
$aCountForum = $aSaveCount[$aForum['cat_id']][1];
$aCountId = $aSaveCount[$aForum['cat_id']][0];
}
else
{
// On reinitialise la clé forum || on incrémente la clé categorie || on
// - sauvegarde la nouvelle categorie dans $aSaveCount
$aCountForum = 0;
$aCountId++;
$aSaveCount[$aForum['cat_id']] = Array($aCountId, 0);
}
}
$aOrderedForums[$aCountId]['cat_id'] = $aForum['cat_id'];
$currentId = $aForum['cat_id'];
}
$aOrderedForums[$aCountId]['Forums'][$aCountForum] = Array('id' => $aForum['forum_id'], 'cat_id' => $aForum['cat_id'], 'name' => $aForum['forum_nom']);
$aCountForum++;
$aSaveCount[$aForum['cat_id']][1]++;
}
?>
et en resultat je me retrouve avec des trucs du genres :
2 => Array
(
cat_id => 4 ------> L'id de la categorie est 4
Forums => Array
(
0 => Array
(
id => 60
---------> Des categories 3 viennent loger dans la mauvaise categorie :
cat_id => 3
name => Titre16
)
1 => Array
(
id => 41
cat_id => 3
name => Titre21
)
2 => Array
(
id => 15
---------> Mais il y a quand meme des 4 ce qui fait un beau melange :
cat_id => 4
name => Titre30
)
3 => Array
(
id => 119
cat_id => 4
name => Titre31
)
)
)
donc voila je vous serez super reconnaissant si vous trouver ce qui cloche.
Moi j'ai fais le tour 5H pas moyen

Yuki

Modifié par Yuk! (15 Sep 2008 - 16:32)