Avatar billede michaelgm Nybegynder
09. november 2007 - 02:14 Der er 16 kommentarer og
1 løsning

fjerne dubletter i array

Array
(
    [0] => Array
        (
            [vagt] => 10114
            [tid] => 11:10
            [checkpunkt] => Bus
            [bus] => 604
            [tiddiff] => 12:31:00
            [linie] => 1
            [chrnr] => 99367
            [station] => Busterminal
            [sted] => 3
        )

    [1] => Array
        (
            [vagt] => 10113
            [tid] => 11:10
            [checkpunkt] => Bus
            [bus] => 604
            [tiddiff] => 12:31:00
            [linie] => 1
            [chrnr] => 99268
            [station] => Busterminal
            [sted] => 2
        )

    [2] => Array
        (
            [vagt] => 10113
            [tid] => 12:40
            [checkpunkt] => Bus
            [bus] => 604
            [tiddiff] => 12:31:00
            [linie] => 1
            [chrnr] => 99268
            [station] => Busterminal
            [sted] => 3
        )

    [3] => Array
        (
            [vagt] => 20122
            [tid] => 12:40
            [checkpunkt] => Bus
            [bus] => 604
            [tiddiff] => 12:31:00
            [linie] => 1
            [chrnr] => 99045
            [station] => Busterminal
            [sted] => 2
        )

)

Jeg har forsøgt at søge på det her på eksperten.. Men har ikke kunne finde noget.. Ikke i et multi array..

Men kunne forestille mig det er noget med det her at gøre:
http://www.php.net/manual/en/function.array-unique.php

Jeg kunne godt tænke mig at at der ikke er dubletter i chrnr så den bliver "[chrnr] => " hvis det er et andet sted i mit array.
Avatar billede jakobdo Ekspert
09. november 2007 - 08:55 #1
Kunne det måske ikke tænkes at man kunne bygge arrayet anderledes op?
Avatar billede michaelgm Nybegynder
09. november 2007 - 10:01 #2
Måske? Har du en idé?.. Jeg skulle gerne kunne udskrive:
08:00 BUS: 672 Vagt: 11706 LINIE: 17  99344

Sådan feks.. Der er nogen gange over 100 rækker? Idéen er jeg senere gerne vil kunne sortere i det?

Hver del som du kan se der er en afgang eller en ankomst
Avatar billede jakobdo Ekspert
09. november 2007 - 10:08 #3
Hvordan bygger du dit array op?
Og må chrnr kun optræde EN gang?
Avatar billede michaelgm Nybegynder
09. november 2007 - 10:16 #4
while ($db = mysql_fetch_array($resultat))
    {   
        $vognlob[] = array(         
        'vagt'=>$db[VAGT],
        'tid'=>$db[TID],
        'checkpunkt'=>$db[CHECKPUNKT],
        'bus'=>$db[BUS],
        'tiddiff'=>$db[TIDDIFF],
        'linie'=>$db[LINIE],
        'chrnr'=>$db[PERSONNUMMER],
        'station'=>$db[STATION],
        'sted'=>$db[STED],
        );
    }

Sådan bygger jeg det op.
Og ja lige i denne situation. Andre gange skal de være der. Først bliver de brugt alle sammen.. Og senere skal jeg have dem ud for at udskrive billeder.
Avatar billede erikjacobsen Ekspert
09. november 2007 - 10:20 #5
Du kunne måske i din SQL sørge for der ikke kom dubletter.
Avatar billede michaelgm Nybegynder
09. november 2007 - 10:24 #6
Nej for første delen af det skal der være alle chrnr'ne.. Vist nemmere hvis jeg viser hvad jeg laver?
Avatar billede michaelgm Nybegynder
09. november 2007 - 10:28 #7
http://90.185.56.122/site/test.php

ellers må jeg tilføje dem i en ny array og så lave den unik?
med http://www.php.net/manual/en/function.array-unique.php
- Men er det ikke en nødløsning?
Avatar billede michaelgm Nybegynder
09. november 2007 - 10:29 #8
Det er billederne til højre der kun skal komme en gang.
Avatar billede erikjacobsen Ekspert
09. november 2007 - 11:33 #9
Ok - ja, du skal bare kopiere det over i et andet array på passende vis. Enten med array_unique, eller over i en hashtabel. Hvis du i en løkke propper alle numrene ind i en hash, så er de der kun een gang. Skitse (uden løkke):

  $h{'99268'} = 1;
  $h{'99268'} = 1;
  $h{'99200'} = 1;

så er er kun 2 værdier som nøgler.
Avatar billede michaelgm Nybegynder
09. november 2007 - 11:40 #10
Har aldrig hørt eller prøvet hashtabeller..
Hvor er det fordel og bruge dem? løkken er ikke noget problem. Den har jeg jo allerede førstegang jeg udskriver mit array.
Avatar billede erikjacobsen Ekspert
09. november 2007 - 11:49 #11
Fordel? Fordi det er nemt... I øjeblikket har du en løkke, der udskriver billeder. Men nogen skal overspringes. Du kan så (skitse)


for (........) {
  $chrnr=.....;
  if (!$h{$chrnr)) {
    ...udskriv billede..
    $h{$cbrnr]=1;
  }
}

Når billedet er udskrevet, sættes værdien til 1, så den kan overspringes næste gang.
Avatar billede erikjacobsen Ekspert
09. november 2007 - 11:53 #12
trykfejl

for (........) {
  $chrnr=.....;
  if (!$h{$chrnr)) {
    ...udskriv billede..
    $h{$cbrnr}=1;
  }
}
Avatar billede majbom Novice
09. november 2007 - 16:53 #13
du kunne osse bare, når du vil udskrive billederne, tjekke om deres chrnr er i et array hvis det er i arrayet, sker der ingen ting, hvis det ikke er i arrayet, tilføjes det og billedet udskrives:

for (........){
  $chrnr=.....;
  if(!in_array($chrnr, $chr_arr)){
    //udskriv billede
    chr_arr[] = $chrnr;
  }
}
Avatar billede erikjacobsen Ekspert
09. november 2007 - 17:06 #14
Ja, det virker ikke, det jeg skriver. Der er vist sket en lille sammenblanding af flere ting inde i mit hovede. Måske fordi jeg rodede med Perl i aftes. Mere rigtigt, stadig en skitse:

trykfejl

for (........) {
  $chrnr=.....;
  if (!$h[$chrnr]) {
    ...udskriv billede..
    $h[$cbrnr]=1;
  }
}
Avatar billede michaelgm Nybegynder
09. november 2007 - 22:38 #15
Jeg fik det til at virke ved og smide det i et array og lave array_unique() på den..
Kan jeg lige så godt nu den alligevel løber arrayet igennem inden jeg skal bruge det til billeder.

I skal have tak for hjælpen.
Kan sagtens følge jer begge. I må gerne gerne ligge et svar hvis i gerne vil have points.
Avatar billede erikjacobsen Ekspert
09. november 2007 - 22:39 #16
Jeg samler slet ikke på point, tak.
Avatar billede michaelgm Nybegynder
10. november 2007 - 02:21 #17
Så lukker jeg igen.
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