Jump to content
Sign in to follow this  
AlecTBM

Søke etter søkeord i array

Recommended Posts

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()

Share this post


Link to post

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:

Edited by kjey

Share this post


Link to post

Hmm

Det var bare halve svaret på spørsmålet.

Med den så går det jo ikke ann å søke på f.eks a så kommer Alex opp.

Eller hva?

 

Ska se nærmere på det i morra.

Share this post


Link to post

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 />";
 }
}

?>

Edited by kjey

Share this post


Link to post

Disse funka delvis.

Hvis jeg søkte på a så kom opp Arne og Arnie.

 

Men hvis jeg søkte på e så kom ingen opp.

Hvordan gjør jeg det?

 

PS.

Hva var forskjellen på de to kodene?

Share this post


Link to post

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:

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...