Avatar billede jakl2 Nybegynder
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.
Avatar billede j3ppah Novice
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...
Avatar billede showsource Seniormester
16. april 2009 - 13:57 #2
Det er nok array_intersect du skal bruge:

http://dk.php.net/manual/en/function.array-intersect.php
Avatar billede j3ppah Novice
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.
Avatar billede jakl2 Nybegynder
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.
Avatar billede jakl2 Nybegynder
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.
Avatar billede j3ppah Novice
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...
Avatar billede jakl2 Nybegynder
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.
Avatar billede j3ppah Novice
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
Avatar billede j3ppah Novice
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.
Avatar billede jakl2 Nybegynder
16. april 2009 - 15:02 #10
Læs tråden! :) Jeg fandt selv svaret for et par indlæg siden.
Avatar billede j3ppah Novice
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!
Avatar billede jakl2 Nybegynder
16. april 2009 - 15:20 #12
Tak for hjælpen
Avatar billede j3ppah Novice
17. april 2009 - 08:41 #13
Det var da så lidt
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