[ Tableau ] Regrouper 2 lignes identiques

VaN
Mammouth du PHP | 1107 Messages

28 avr. 2009, 12:14

Bonjour,

Sur la création d'un panier, je suis confronté à un problème. J'aimerai boucler sur mon panier, et regrouper 2 lignes ensemble, si elles sont identiques.

Voici un exemple, du tableau $_SESSION["panier"] :
Array ( 
[packs] => Array ( 
    [0] => Array ( 
        [pack_id] => 1 
        [pack_name] => Vente 
        [pack_price] => 249 
        [inserted] => 0 
        [options] => Array ( 
            [0] => Array ( 
                [option_id] => 1 
                [option_name] => Panneau personnalisé 
                [option_price] => 0 
            ) 
            [1] => Array ( 
                [option_id] => 4 
                [option_name] => Mailing de situation A VENDRE 
                [option_price] => 50 
            ) 
        ) 
        [quantite] => 1 
        ) 
    ) 
    [1] => Array ( 
        [pack_id] => 1 
        [pack_name] => Vente 
        [pack_price] => 249 
        [inserted] => 0 
        [options] => Array ( 
            [0] => Array ( 
                [option_id] => 1 
                [option_name] => Panneau personnalisé 
                [option_price] => 0 
            ) 
        ) 
        [quantite] => 1 
        ) 
    ) 
    [2] => Array ( 
        [pack_id] => 1 
        [pack_name] => Vente 
        [pack_price] => 249 
        [inserted] => 0 
        [options] => Array ( 
            [0] => Array ( 
                [option_id] => 1 
                [option_name] => Panneau personnalisé 
                [option_price] => 0 
            ) 
            [1] => Array ( 
                [option_id] => 4 
                [option_name] => Mailing de situation A VENDRE 
                [option_price] => 50 
            ) 
        ) 
        [quantite] => 1 
        ) 
    )
    [total] => Array ( 
        [ht] => 548 
        [ttc] => 655.41 
    ) 
) 
Dans ce tableau, la ligne pack[0] et la ligne pack[2] sont absolument identiques.
J'aimerai donc les fusionner, tout en modifiant la variable pack[quantite]

Existe t'il une fonction PHP qui me permetttrait de faire ce genre de chose ?
Si non, comment dois-je m'y prendre ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 avr. 2009, 13:02

Si non, comment dois-je m'y prendre ?
éviter de te retrouver dans ce genre de situations ?
vérifier à la création d'une entrée si elle existe déjà ou pas :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 686 Messages

28 avr. 2009, 13:09

vérifier à la création d'une entrée si elle existe déjà ou pas :-k
J'adhère aussi pour ta solution,
verifier si l'entrée existe, si oui il lui ajoute la quantitée renseignée à celle qui est deja dans le pannier

ViPHP
ViPHP | 3300 Messages

28 avr. 2009, 13:53

d'accord avec les deux réponses précédentes mais tu peux faire des comparaisons globales de tableaux avec un serialize pour éviter d'avoir des doublons parfait, ca fonctionnerais.
Fait du php depuis que ca existe ou presque :)

VaN
Mammouth du PHP | 1107 Messages

28 avr. 2009, 16:43

Comment faire ? Le tableau $_POST que je reçois sur ma page n'a pas du tout la même architecture que le tableau du panier.

Et dans le cas ou je reformate mon tableau $_POST, pour qu'il ait la meme architecture que mon tableau de panier, que je fasse une comparaison entre les 2 tableaux, comment puis-je savoir à quelle ligne correspond mon tableau passé en $_POST ?

houlahoup
Invité n'ayant pas de compte PHPfrance

28 avr. 2009, 20:03

Une solution très simple, serait de serialiser, dédoublonner et désérialiser ;)
$tab = array(1=>array(10, 20), 2=>array(30, 50), 3=>array(10, 20));

$newTab = array_map('unserialize', array_unique(array_map('serialize', $tab)));
Tu perds les index du tableau, mais je ne pense pas que tu en es besoin.