Avatar billede peraa Nybegynder
04. juni 2001 - 09:49 Der er 1 kommentar

Søgning i et array ved hjælp af: \"in_array\"

Kan nogen forklare mig dette?

Min php-kode ser således ud:

<?php
$orgfile = file(\"ferie_total.txt\");
$newfile = explode (\":\", $ugebox);
$num = count($newfile)-1;

for ($i=0; $i<$num; $i++) {
  $a = $newfile[$i];

  print $a;  // kontrol af værdierne i $newfile

    if (in_array($a, $orgfile)) {
    print (\"Beklager, men uge \" . $a . \" er tidligere indberettet\");
}
}
?>

ferie_total.txt ser således ud:

43717579;43;2001
43717579;24;2001
75891023;25;2000
75891023;26;2000
75652310;23;2001
75652310;24;2001
75652310;25;2001
43717579;38;2001
43717579;39;2001
43717579;40;2001
43717579;41;2001
75652388;28;2001
75652388;29;2001
75652310;26;2001
75652310;27;2001
43692012;30;2001
35324355;28;2001
75652388;30;2001
75652388;31;2001
75652388;30;2001


Indholdet af $ugebox ($newfile) er printet ud via variablen $a og viser således på skærmen:

43717579;42;2001 43717579;43;2001 43717579;44;2001


Som det fremgår indeholder ferie_total.txt jo værdien 43717579;43;2001, men if-sætningen checkker kun på den første værdi af $a - dvs. printer kun efterfølgende print-sætning ud, hvis den første værdi i $newfile er 43717579;43;2001 - hvorfor?

Mvh.
PAA

Avatar billede erikjacobsen Ekspert
04. juni 2001 - 11:03 #1
Jeg kan se to mulige problemer:
  for ($i=0; $i<$num; $i++) {
skal nok være
  for ($i=0; $i<=$num; $i++) {

for du har allerede trukket én fra i linien ovenover. Så vil file(...), så vidt jeg
husker, have linieskiftet med i hver arrayindgang, så du kan ikke ved direkte
at sammenligne nogensinde finde dine værdier, med mindre du fjerner dette,
eller tester med f.eks. strpos for hver indgang (altså ser om det du leder efter
er en delstreng, der starter forrest).

Hvad med at overveje at putte det i en database i stedet for :)
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