Avatar billede michaeltryl Seniormester
16. december 2007 - 13:38 Der er 9 kommentarer og
1 løsning

sammenligne to arrays

Jeg har to arrys f.eks

1: 5, 14, 15, 18, 28, 32, 36
2: 5, 14, 17, 18, 30, 31, 35

Jeg har brug for at sammenligne disse to arrays og finde ud af hvor mange tal der er ens (i dette tilfæde 3 (5, 14 og 18))
er der en som har et bud på hvordan dette kan gøres nemmest?
Avatar billede coderdk Praktikant
16. december 2007 - 13:41 #1
Prøv med array_intersect() http://dk2.php.net/array_intersect
Avatar billede michaeltryl Seniormester
16. december 2007 - 14:23 #2
jeg har en while som finder 7 forskellige tal
og ligger dem i et array sådan her

$tallene[]= $ny_tal;

derefter henter jeg 7 tal ud fra et felt i databsen. de står sådan her i feltet
1, 7, 11, 14, 24, 27, 30
og jeg laver dem om til et array med
$tal = $b['tal'];
$tall = explode(",", $tal);

$resultt = array_intersect($tall, $tallene);
så tæller jeg hvor mange felter der er i arrayet $resultt med
$result = count($resultt);

echo"$result"; // dette giver kun 1 u anset hvor mange rigtige der er, men giver 0 hvis der er 0 rigtige

jeg har prøvet at udskrive de to tal arrays med print_r og det giver dette resultat

//$tall
Array ( [0] => 1 [1] => 7 [2] => 11 [3] => 14 [4] => 24 [5] => 27 [6] => 30 )

//$tallene (her er lavet 20 tilfældige tal for at teste)
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 7 [4] => 8 [5] => 9 [6] => 12 [7] => 16 [8] => 17 [9] => 20 [10] => 22 [11] => 26 [12] => 28 [13] => 29 [14] => 30 )

Har du et bud på hvor min fejl kan være?
Avatar billede erikjacobsen Ekspert
16. december 2007 - 14:46 #3
Sammenligner du et array med tal og et arrat med strenge? Det kan man ikke - se linket fra coderdk.
Avatar billede michaeltryl Seniormester
16. december 2007 - 15:39 #4
nej jeg sammenligner de to arrays
$tall og $tallene

$tall bliver lavet ud fra denne streng
$tal = $b['tal'];
ved hjælp af
$tall = explode(",", $tal);

og

bliver genereret med
$tallene[] = $ny_tal
hvor $ny_tal bliver lavet med funktionen rand()
Avatar billede erikjacobsen Ekspert
16. december 2007 - 18:43 #5
Jeg overfortolkede vist hvad der stod på PHPs side om array_intersect.

Jeg kan af gode grunde ikke gætte hvad du laver, men på http://n0p.com/810669.php ligger koden forneden, og den virker vist efter hensigten. Prøv selv.

<?

  $a=Array();
  for ($i=0;$i<10;$i++) {
    $a[]=rand(0,20);
  }

  print join($a,",")."<br>";

  $b=Array();
  for ($i=0;$i<10;$i++) {
    $b[]=(string)rand(0,20);
  }
  print join($b,",")."<br>";

 
  $c=split(",","1,2,3,4,5,6,7,8,9,10,11,12,13");
  print join($c,",")."<br>";
 
   
  $d1=array_intersect($a,$c);
  $d2=array_intersect($b,$c);

  print "<br>";
  print join($d1,",")."<br>";
  print join($d2,",")."<br>";
 
?>
Avatar billede michaeltryl Seniormester
16. december 2007 - 20:29 #6
Det virker perfekt.
Mange tak for hjælpen. bare smid et svar så får du point
Avatar billede erikjacobsen Ekspert
16. december 2007 - 20:59 #7
Jeg samler slet ikke på point, tak.

Man hvad var det så, der ikke virkede før?
Avatar billede michaeltryl Seniormester
16. december 2007 - 21:08 #8
det var forkert antal der kom ud af sammenligningen. det var næsten altid 3-5 forkert
endnu en gang tak for hjælpen og god jul
Avatar billede michaeltryl Seniormester
23. december 2007 - 23:32 #9
lukker her og igen tak
Avatar billede michaeltryl Seniormester
23. december 2007 - 23:32 #10
luk
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