En php 4.3.8, ca marche. Ca m'affiche bien mes 10 catégories et les
sous-catégories associées. Par contre en php 4.3.10, ca n'affiche que la
premiere catégorie, et ses sous-catégories.
J'ai résolu le probleme en ajoutant
$categories2 = $categories;
et en utilisant $categories2
C'est comme si le second foreach ecrase le premier... Quelqu'un
aurait-il des infos intéressantes sur ce point ?
En php 4.3.8, ca marche. Ca m'affiche bien mes 10 catégories et les sous-catégories associées. Par contre en php 4.3.10, ca n'affiche que la premiere catégorie, et ses sous-catégories.
Le fonctionnement de PHP 4.3.10 me semble être le plus proche des spécifications de PHP.
Tu entres dans ta première boucle, php fait un reset sur $categories et prend le premier élement ...
Tu entres dans ta seconde boucle, php fait un reset sur $categories et prend les éléments à la suite. Le compteur sur $categories se trouve donc à la fin du tableau.
La première boucle reprend la main, mais le compteur sur $categories est à la fin, il n'y a donc plus rien à prendre.
J'ai résolu le probleme en ajoutant $categories2 = $categories; et en utilisant $categories2
En php 4.3.8, ca marche. Ca m'affiche bien mes 10 catégories et les
sous-catégories associées. Par contre en php 4.3.10, ca n'affiche que la
premiere catégorie, et ses sous-catégories.
Le fonctionnement de PHP 4.3.10 me semble être le plus proche des
spécifications de PHP.
Tu entres dans ta première boucle, php fait un reset sur $categories et
prend le premier élement ...
Tu entres dans ta seconde boucle, php fait un reset sur $categories et
prend les éléments à la suite. Le compteur sur $categories se trouve
donc à la fin du tableau.
La première boucle reprend la main, mais le compteur sur $categories est
à la fin, il n'y a donc plus rien à prendre.
J'ai résolu le probleme en ajoutant
$categories2 = $categories;
et en utilisant $categories2
En php 4.3.8, ca marche. Ca m'affiche bien mes 10 catégories et les sous-catégories associées. Par contre en php 4.3.10, ca n'affiche que la premiere catégorie, et ses sous-catégories.
Le fonctionnement de PHP 4.3.10 me semble être le plus proche des spécifications de PHP.
Tu entres dans ta première boucle, php fait un reset sur $categories et prend le premier élement ...
Tu entres dans ta seconde boucle, php fait un reset sur $categories et prend les éléments à la suite. Le compteur sur $categories se trouve donc à la fin du tableau.
La première boucle reprend la main, mais le compteur sur $categories est à la fin, il n'y a donc plus rien à prendre.
J'ai résolu le probleme en ajoutant $categories2 = $categories; et en utilisant $categories2
Moi j'aurais fait comme ca : foreach($categories as $category) if($category->idFather != 0) //!=, pas == hein ? $subCategories[$category->idFather][] = $category;
foreach($categories as $category) { echo $category->label; foreach($subCategories[$category->id] as $subCategory) { //... } }
Ca me semble plus propre et c'est en O(n) plutot que O(n²) (bon, avec 10 categories ca va pas faire une grosse difference, mais avec 1000 ca se verra)
Moi j'aurais fait comme ca :
foreach($categories as $category)
if($category->idFather != 0) //!=, pas == hein ?
$subCategories[$category->idFather][] = $category;
foreach($categories as $category)
{
echo $category->label;
foreach($subCategories[$category->id] as $subCategory)
{
//...
}
}
Ca me semble plus propre et c'est en O(n) plutot que O(n²) (bon, avec 10
categories ca va pas faire une grosse difference, mais avec 1000 ca se
verra)
Moi j'aurais fait comme ca : foreach($categories as $category) if($category->idFather != 0) //!=, pas == hein ? $subCategories[$category->idFather][] = $category;
foreach($categories as $category) { echo $category->label; foreach($subCategories[$category->id] as $subCategory) { //... } }
Ca me semble plus propre et c'est en O(n) plutot que O(n²) (bon, avec 10 categories ca va pas faire une grosse difference, mais avec 1000 ca se verra)