Avatar billede 7th Praktikant
08. november 2003 - 12:37 Der er 7 kommentarer og
1 løsning

Multi-array gruppering og sortering

Jeg har et multi-dimensionelt array, hvor hver enkelt array indeni har disse værdier.

$kurv['variabel']['varenummer'];
$kurv['variabel']['farve'];
$kurv['variabel']['storrelse'];
$kurv['variabel']['antal'];

Disse værdier vil jeg gerne have sorteret, så de kan fremvises på en overskuelig måde. Hvis det kan lade sig gøre vil jeg meget gerne have dem grupperet og sorteret således.

1: Grupper efter varenummer. Det vil sige, alle de array som indeholder samme varenummer, skal lægger i samme gruppe.

2: Hver gruppe skal sorteres efter storrelse, farve og antal.

$kurv['variabel']['storrelse'] kan indeholde s, m, l, xl.

Eksempel...

Varegruppe 70 (varenummer):
Størrelse: small (storrelse) | Farve : Blå (farve) | Antal: 10 (antal).
Størrelse: small (storrelse) | Farve : Blå (farve) | Antal: 25 (antal).
Størrelse: medium (storrelse) | Farve : Sort (farve) | Antal: 5 (antal).
Størrelse: large (storrelse) | Farve : Grå (farve) | Antal: 2 (antal).

Håber I vil være behjælpelig :)
Avatar billede erikjacobsen Ekspert
08. november 2003 - 12:42 #1
Hvad med en lidt anden struktur:

  $varenummer['70']=new Array();

  $varenummer['70'][]=new Array("Blå","XL",70);
  $varenummer['70'][]=new Array("Rød","XL",40);
  $varenummer['70'][]=new Array("Gul","XL",20);
  $varenummer['70'][]=new Array("Blå","S",10);

  $varenummer['80']=new Array();

  $varenummer['80'][]=new Array("Blå","XL",70);
  $varenummer['80'][]=new Array("Rød","XL",40);
  $varenummer['80'][]=new Array("Gul","XL",20);
Avatar billede erikjacobsen Ekspert
08. november 2003 - 12:47 #2
Ja, der skal jo ikke stå "new" i PHP - jeg tænkte vist på noget andet... ;)
Avatar billede 7th Praktikant
08. november 2003 - 12:52 #3
Hvis du ikke var erikjacobsen, havde jeg sat new-bie :) Well tjo, nu har jeg brugt ret meget tid på at lave min indkøbskurv, men hvis den engang skal fornyes, kunne det være en ide.
Avatar billede 7th Praktikant
08. november 2003 - 14:25 #4
Jeg har fulgt erikjacobsens råd, og lavet min indre array struktur som foreslået, da det fylder mindre, dog med en lille afvigelse.

$varenummer[$variabel][] = array($varenummer , $farve , $storrelse , $antal);
Avatar billede erikjacobsen Ekspert
08. november 2003 - 14:53 #5
Hvad er forskellen på det du gør nu og det du gjorde før?

Fordelen ved min geniale (tm) metode, er at du nemt kan sortere og gruppere.
Avatar billede 7th Praktikant
08. november 2003 - 15:05 #6
Før så mit array således ud...

$kurv[$variabel]['varenummer'] = $varenummer;
$kurv[$variabel]['farve'] = $farve;
$kurv[$variabel]['storrelse'] = $storrelse;
$kurv[$variabel]['antal'] = $antal;

Nu...

$kurv[$variabel][] = array ($varenummer , $farve , $storrelse , $antal);

Derved "sparer" jeg ca. 100 bytes for hver vare der bliver lagt i indkøbskurven, og da indkøbskurven er tiltænkt distributører, kan den jo nemt komme til at fylde noget.

Rent teknisk tror jeg ikke der er den store forskel, men det vil jeg ikke gøre mig alt for klog på, da jeg ikke kan finde rundt i det :)
Avatar billede erikjacobsen Ekspert
08. november 2003 - 16:35 #7
ja, ok, så er der sparet et par bytes. Men reelt er det så det samme du laver
Avatar billede 7th Praktikant
11. november 2003 - 18:15 #8
:(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester