Kenneth Dammyr Skrevet 13. mai 2008 Del Skrevet 13. mai 2008 Hei Har en tilsynelatende enkel oppgave her, men lurer på om intelligensen min kommer til kort. Jeg klarer nemlig ikke å finne ut hvordan saken skal programmeres: Jeg har en tallrekke, eks. "4,4,4,6,6,12,12,30,45,45". Så vil jeg telle hvor mange tilfeller det er av hvert tall. Jeg ser jo med det blotte øye at det er 3 firere, 2 seksere osv. Men klarer faen ikke å få PHP til å finne det ut. Blir som vanlig takknemlig for all hjelp Lenke til kommentar
Raring Skrevet 13. mai 2008 Del Skrevet 13. mai 2008 (endret) <? $array = explode(",", $string); sort($array); foreach ($array as $key => $value) { $array2[$value] += 1; } print_r($array2); ?> burde i ditt tilfelle gi: $array[4] = 3 $array[6] = 2 $array[12] = 2 $array[30] = 1 $array[45] = 2 Endret 13. mai 2008 av Raring Lenke til kommentar
Kenneth Dammyr Skrevet 13. mai 2008 Forfatter Del Skrevet 13. mai 2008 Takker for raskt svar, men det var visst ikke så enkelt som jeg hadde tenkt. Jeg tenker nå å skrive en liste som sier: Produktid 4: 3 oppføringer Produktid 6: 2 oppføringer Produktid 12: 1 oppføring Men jeg vet ikke hvilke produktID-er jeg har. Ergo kan jeg ikke skrive $array[4]. Mulig jeg er trøtt altså, men... Lenke til kommentar
Jonas Skrevet 13. mai 2008 Del Skrevet 13. mai 2008 (endret) Uh, ikke helt lett å forstå hva i all verden som er problemet. Du har en liste over produktID'er og vil telle antall oppføringer. Dersom du vil hente ut èn av disse antallene (f.eks. 4) er du naturligvis nødt til å ha produktID'en, ettersom det er det listen i utgangspunktet består av. Endret 13. mai 2008 av Jonas Lenke til kommentar
Raring Skrevet 13. mai 2008 Del Skrevet 13. mai 2008 (endret) <? $string = "4,4,4,6,6,12,12,30,45,45"; $array = explode(",", $string); sort($array); $counter = 0; foreach ($array as $key => $value) { $array2[$value] += 1; } foreach ($array2 as $key => $value) { $array3[$counter][0] = $key; $array3[$counter][1] = $value; $counter++; } ?> Burde gi: $array[0][0] = 4 //Hvilket tall $array[0][1] = 3 //Antall oppføringer av overnevnte tall $array[1][0] = 6 //Hvilket tall $array[1][1] = 2 //Antall oppføringer av overnevnte tall $array[2][0] = 12 //Hvilket tall $array[2][1] = 2 //Antall oppføringer av overnevnte tall $array[3][0] = 30 //Hvilket tall $array[3][1] = 1 //Antall oppføringer av overnevnte tall $array[4][0] = 45 //Hvilket tall $array[4][1] = 2 //Antall oppføringer av overnevnte tall Endret 13. mai 2008 av Raring Lenke til kommentar
Kenneth Dammyr Skrevet 13. mai 2008 Forfatter Del Skrevet 13. mai 2008 (endret) Uh, ikke helt lett å forstå hva i all verden som er problemet. Du har en liste over produktID'er og vil telle antall oppføringer. Dersom du vil hente ut èn av disse antallene (f.eks. 4) er du naturligvis nødt til å ha produktID'en, ettersom det er det listen i utgangspunktet består av. Greia er at jeg lager et enkelt handlesystem. Der hver vare har en ID. Ettersom brukeren velger varer havner de ID-en i en cookie. Derav tallrekka: "4,4,4,6,6.." Brukeren vil ha 3 stykker av varen med ID 4. Men når jeg viser handlevognen vil jeg jo ikke skrive ProduktID 4, antall: 1 ProduktID 4, antall: 1 ProduktID 4, antall: 1 Det vil se bedre ut med ProduktID 4, antall: 3 Naturlig nok vet jeg ikke hvilke varer brukeren ønsker og dermed ikke hvilke tall som befinner seg i tallrekka. Klarere da? Raring: Takker for hjelpen, men løsningen gav meg ikke svaret direkte dessverre. Skal prøve å tenke litt selv også først, med mindre noen har en umiddelbar løsning Endret 13. mai 2008 av Kenneth Dammyr Lenke til kommentar
Raring Skrevet 13. mai 2008 Del Skrevet 13. mai 2008 (endret) Personlig syntes jeg at mitt siste svar passet din situasjon perfekt og gjør derfor et siste forsøk: <? //Liste over produkter $product = array('Ost','Melk','Smør','Juice','Iskrem','Cornflakes','Mel','Bakepulver','Sukker'); //Hva som står i din cookie $string = "4,4,4,6,6,3,3,3,3,1"; //deler opp stringen til array $array = explode(",", $string); //Sorterer arrayet sort($array); $counter = 0; //Teller opp antall forekomster av hvert produkt foreach ($array as $key => $value) { if(isset($array2[$value])) { $array2[$value] += 1; } else { $array2[$value] = 1; } } //Samler infrmasjonen i et multi-dimensjonalt array foreach ($array2 as $key => $value) { $array3[$counter][0] = $key; $array3[$counter][1] = $value; $counter++; } //Printer output for ($i=0; $i < sizeof($array3); $i++) { echo $product[$array3[$i][0]] . ": " . $array3[$i][1] . " stk.<br>"; } ?> Dette vil gi: Melk: 1 stk. Juice: 4 stk. Iskrem: 3 stk. Mel: 2 stk. Endret 13. mai 2008 av Raring Lenke til kommentar
Kenneth Dammyr Skrevet 13. mai 2008 Forfatter Del Skrevet 13. mai 2008 Fantastisk! Var denne som gjorde susen: for ($i=0; $i < sizeof($array3); $i++) { echo $product[$array3[$i][0]] . ": " . $array3[$i][1] . " stk.<br>"; } Takker for all hjelp Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå