Gå til innhold

Søke etter søkeord i array


Anbefalte innlegg

Jeg har en liste med navn og bursdag og sånt. Denne listen er i array.

Jeg har også laget en tabell der alt er skrevet opp ved hjelp av en løkke.

 

Problemet mitt oppstår nå jeg nå har fått veldig mange i denne listen.

Så jeg har tenkt å kunne søke etter personer og/eller vise dem i alfabetisk rekkefølge.

 

Jeg har nå fått til å søke etter navn HVIS jeg skriver navnet rett.

 

Hvis jeg søker etter alex så får jeg opp ikke noe, men hvis jeg skriver Alex så får jeg opp Alex.

 

Jeg har lyst til at man bare trenger å søke på alex for å få opp Alex.

Eller få alle som har en a i seg eller starter med a når man søker på a.

 

Noen som vet om en metode?

 

jeg bruker nå array_search()

Lenke til kommentar
Videoannonse
Annonse

Angående søkeproblemet ditt med stor og liten bokstav bruker du funksjonen strtolower(). Denne funksjonen gjør at alle bokstavene i en gitt tekststreng blir gjort om til små bokstaver. Noe lignende dette kan du jo gjøre:

 

<?php

if(strtolower($innskrevet_navn) = strtolower($navn_i_tabell[$i])) {
echo $navn_i_tabell[$i];
}

?>

 

Altså denne if-setningen kan du legge inn i søke-løkka di. Da vil denne setningen sjekke om navnet som ligger i tabellen stemmer overens med søkeordet.

 

Og til sorteringsproblemet ditt, PHP manualen er din venn (som alle vet :D ): http://no.php.net/manual/en/function.sort.php

 

Hvis du får problemer, så si ifra, og gjerne legg ut litt kode :thumbup:

Endret av kjey
Lenke til kommentar

Beklager, glemte det problemet :innocent: Du kan gjøre det på denne måten hvis du vil:

 

<?php

$array = array("Arne", "Bjarne", "Arnie");

foreach($array as $element) {
 if(strpos(strtolower($element), strtolower($bokstav)) === 0) {
   echo $element . "<br />";
 }
}

?>

Endret av kjey
Lenke til kommentar

Hmmm... vet ikke om det var forskjellen på de to kodene du skjønte så jeg skriver en kort forklaring.

 

Koden nedenfor er koden for søk med hele navn. Den gjør om alle bokstavene til små bokstaver slik at man slipper å tenke på det når man søker.

 

if(strtolower($innskrevet_navn) = strtolower($navn_i_tabell[$i])) {
echo $navn_i_tabell[$i];
}

 

Den andre koden sjekker om bokstaven (f.eks. "A") brukeren har skrevet inn er den første bokstaven i et eller flere av navnene i tabellen. Grunnen til at det sjekkes om det er lik 0 er fordi bokstavindekseringen er lik som indeksering i tabeller ("nullbasert").

 

$array = array("Arne", "Bjarne", "Arnie");

foreach($array as $element) {
if(strpos(strtolower($element), strtolower($bokstav)) === 0) {
  echo $element . "<br />";
}
}

 

Du har sikkert allerede forstått det, men jeg skrev dette for å være på den sikre siden :w00t:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...