Vous n'êtes pas identifié(e).

  • Contributions :
  • Vos boîtes de messages privés sont vides.

#1 2016-04-22 08:50:04

Mention Walid
Soldier
Inscription : 2013-02-07
Messages : 1 981

Sémantique
Audit et Analyse
Netlinking
PHP

Array multidimensionnel pour catégories sous-catégories

Hello,

Après avoir galéré comme pas possible, je vous partage une solution que j'ai trouvé sur le web pour afficher sous forme d'arbre les catégories et sous catégories. J'ai encore beaucoup à apprendre, notamment au niveau des fonctions sur les Arrays.

Juste une requête sql du genre "SELECT id,parent,name FROM table_category;" sans ce soucier de la relation parents enfants. j'ai trouvé ça pas mal par ce que tous les autres bouts de codes que j'ai trouvé obligeais à faire plusieurs requêtes pour avoir l’arborescence.

Voilà le code est le lien au cas où cela peut vous servir : http://codepad.org/8p9DyHUZ



<?php

$categories = array(
    array('id' => 1,  'parent' => 0, 'name' => 'Category A'),
    array('id' => 2,  'parent' => 0, 'name' => 'Category B'),
    array('id' => 3,  'parent' => 0, 'name' => 'Category C'),
    array('id' => 4,  'parent' => 0, 'name' => 'Category D'),
    array('id' => 5,  'parent' => 0, 'name' => 'Category E'),
    array('id' => 6,  'parent' => 2, 'name' => 'Subcategory F'),
    array('id' => 7,  'parent' => 2, 'name' => 'Subcategory G'),
    array('id' => 8,  'parent' => 3, 'name' => 'Subcategory H'),
    array('id' => 9,  'parent' => 4, 'name' => 'Subcategory I'),
    array('id' => 10, 'parent' => 9, 'name' => 'Subcategory J'),
);

function categoriesToTree(&$categories) {

    $map = array(
        0 => array('subcategories' => array())
    );

    foreach ($categories as &$category) {
        $category['subcategories'] = array();
        $map[$category['id']] = &$category;
    }

    foreach ($categories as &$category) {
        $map[$category['parent']]['subcategories'][] = &$category;
    }

    return $map[0]['subcategories'];

}

echo "=== BEFORE ===\n";
print_r ($categories);

$tree = categoriesToTree($categories);

echo "=== AFTER ===\n";
print_r ($categories);

echo "=== TREE ===\n";
print_r ($tree);
 


Fatigué du SEO sans résultats ? Je te propose :

1 => Un vrai Road Map SEO - 2 => Une Optimisation aux petits oignons - 3 => Des Prestations de Trust Linking
Mon Id Skype : walid.gabteni - Mon site : Light On SEO

Hors ligne

Pied de page des forums