Construire un tableau PHP récursivement
Posté : 22 oct. 2009, 15:46
Bonjour,
J'ai une table SQL, qui contient des familles de produits, sous cette forme : Comme vous pouvez le voir, certaines familles sont des enfants d'autres familles, autrement dit, des sous-familles.
J'aimerai créer une fonction, qui me retourne un tableau, contenant l'ensemble de ces familles, où les enfants, sont un tableau contenu dans le parent.
Quelque chose ressemblant à ça :
J'imagine qu'il faut que je fasse une fonction qui s'appelle elle-même, à un moment ou à un autre (il me semble que cela s'appelle une fonction récursive ?), mais je n'arrive pas à organiser ma réflexion pour trouver comment faire.
J'ai commencé à faire la fonction suivante, mais je reçois une erreur PHP et je ne sais pas trop pourquoi.
Merci d'avance
J'ai une table SQL, qui contient des familles de produits, sous cette forme : Comme vous pouvez le voir, certaines familles sont des enfants d'autres familles, autrement dit, des sous-familles.
J'aimerai créer une fonction, qui me retourne un tableau, contenant l'ensemble de ces familles, où les enfants, sont un tableau contenu dans le parent.
Quelque chose ressemblant à ça :
Code : Tout sélectionner
Array
(
[0] => Array
(
[family_id] => 1
[family_name] => Vetements
[children] => Array
(
[0] => Array
(
[family_id] => 2
[family_name] => T-shirts
[children] => Array
(
[0] => Array
(
[family_id] => 5
[family_name] => T-shirts Hommes
)
)
)
[1] => Array
(
[family_id] => 3
[family_name] => Pantalons
)
)
)
[1] => Array
(
[family_id] => 4
[family_name] => Informatique
)
)J'ai commencé à faire la fonction suivante, mais je reçois une erreur PHP et je ne sais pas trop pourquoi.
// Remplie un tableau contenant une famille, avec ses enfants, et retourne ce tableau
function fill_family_with_children($family_array) {
global $config, $tables;
$children = getDataFromQuery(sprintf("SELECT family_id, family_name FROM ".$tables["families"]." WHERE family_parent_id = '%d' AND family_statut = 1",
$family_array["family_id"]), true);
if(!empty($children)) {
//print_r_pre($children, "red");
foreach($children as $key => $child) {
//print_r_pre($child, "green");
$children[$key] = fill_family_with_children($child);
}
$family_array["children"] = $children;
}
return $family_array;
}
Quelqu'un pourrait-il me donner un coup de pouce ?Notice: Array to string conversion in lib\lib.main.php on line 866
Merci d'avance