16. april 2009 - 13:49
Der er
12 kommentarer og 1 løsning
Find ens tal i arrays
Hej Eksperter Jeg har 3, med tiden 4 eller 5 arrays, som indeholder en lang række tal. Jeg vil så gerne lave en kode, som sammenligner den og udskriver de tal som går igen i 2 eller flere arrays. Det vil sige at hvis vi har de her 5 arrays: array1(1,2,3,4,5) array2(1,6,7,8,9,0) array3(0,12,23,4, 1) Når de er blevet sammenlignet skal den udskriver: 1 4 0 Fordi de tal går igen i 2 eller flere arrays. Placeringen af tallet er altså ligegyldigt.
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
16. april 2009 - 13:57
#1
uha, nu jeg ikke så skarp i php, men ved at i c# er der en der hedder .contains, Der må være noget lignende i php som du kan bruge...
16. april 2009 - 13:57
#2
16. april 2009 - 14:13
#3
ja array_intersect ville være perfekt til det :)... Var noget i den stil jeg kiggede efter... Men hvis man bare bruger den alene... altså fx. $dobbles = array_merge( array_intersect($array1, $array2) array_intersect($array2, $array3) array_intersect($array1, $array3) ); Nu må du ikke hænge mig op på noget, som sagt roder jeg ikke med php normalt, og det er bare en af eksemplerne jeg har tager der inde fra og lavet så de passer til dit... Hvis jeg da har forstået det korrekt.
16. april 2009 - 14:28
#4
Hej j3ppah Nu har jeg lige lavet følgende kode. $array1 = array(1,2,3,4,5); $array2 = array(1,6,7,8,9,0); $array3 = array(0,12,23,4, 1); $dobbles = array_merge( array_intersect($array1, $array2), array_intersect($array2, $array3), array_intersect($array1, $array3) ); print_r($dobbles); Det udskriver: Array ( [0] => 1 [1] => 1 [2] => 0 [3] => 1 [4] => 4 ) Det sidste problem er så at den skal fjerne gengangere. Den skal kun vise 1-tallet en gang.
16. april 2009 - 14:30
#5
Hov det må være array_unique(); Er det nogen som kan se om dette er helt korret? Det ser ud til at virke, men ville være træls hvis den ikke fanger alle.
16. april 2009 - 14:32
#6
Ahhh, det er fordi den tager 1 med alle gange fordi den er sand ved alle sammen... Hmm.... Tænker lige 5 min over hvordan den så skal skrives om...
16. april 2009 - 14:40
#7
j3ppah > array_unique(); var svaret, bare så du lige er opmærksom på det. Du må gerne smide et svar. Til alle andre: I må meget gerne skrive hvis i mener at der vil opstå fejl ved en given kombination.
16. april 2009 - 14:53
#8
$dobbles = array_merge( array_intersect($array1, $array2) array_intersect($array2, $array3) array_intersect($array1, $array3) ); foreach in $doubles ( in_array ($doubles, $newarray) ) print_r($newarray); Er slet ikke sikker på det virker.. sidder ikke lige med noget jeg kan teste det i, og ved ikke en gang om det hedder foreach i php, eller om det er stillet op på den rigtige måde :d.. men det var da et forsøg vær :P
16. april 2009 - 14:56
#9
hov hov hov... helt forkert... Kan se det ikke vil virke, og det er helt forkert skrevet :D... Du skal finde en måde du kan cutte det ene array du havde fået lavet ned, så tallene kun optræder en gang... Ved ikke om der er noget der hedder DISTINCT i php :P?... Der er vi så over og snakke SQL jo :D Prøv at se om du kan finde noget der kan cutte det ned til at de kun bliver vist en gang.
16. april 2009 - 15:02
#10
Læs tråden! :) Jeg fandt selv svaret for et par indlæg siden.
16. april 2009 - 15:11
#11
Haha, sorry :D.. Kom sku til lige at være lidt for hurtig der ;)... Men så lærte man jo også lidt idag!
16. april 2009 - 15:20
#12
Tak for hjælpen
17. april 2009 - 08:41
#13
Det var da så lidt
Vi tilbyder markedets bedste kurser inden for webudvikling