login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Werken met arrays (Opgelost)

Offline Martijn2008 - 11/01/2009 19:03 (laatste wijziging 11/01/2009 19:06)
Avatar van Martijn2008PHP beginner Hallo allemaal,

Ik heb een array gevuld met 26 resultaten. De array start bij 1, dus niet bij 0. Het idee is als volgt: "Stel je typt de naam Piet in". Dan moeten uit de array de resultaten voor de letters P, i, e, t gezocht worden, maar dat kan niet in 1 keer. De invoer zou namelijk eerst omgezet moeten worden naar een integer, het resultaat zou de 16e, 9e, 5e en 20ste plaats uit de array moeten opleveren. Ik vraag me af hoe ik dit het eenvoudigst kan aanpakken. Graag hoor ik van jullie allerlei creatieve ideeën om dit op te lossen.

Bedankt alvast voor jullie reacties!

Martijn

9 antwoorden

Gesponsorde links
Offline vinTage - 11/01/2009 19:05 (laatste wijziging 11/01/2009 19:07)
Avatar van vinTage Nieuw lid piet exploden en foreach
edit
hmm exploden lukt wss niet, dan met een forloopje 
Offline Martijn2008 - 11/01/2009 19:08 (laatste wijziging 11/01/2009 19:16)
Avatar van Martijn2008 PHP beginner Dat klinkt best wel ingewikkeld, heb je misschien een klein voorbeeldje? Trouwens wat kan ik eigenlijk doen met foreach, want dat begrijp ik eigenlijk nog niet zo goed ?

Ik heb even een klein voorbeeldje gemaakt, zodat het allemaal misschien wat beter te begrijpen valt. Ik heb een array gemaakt voor de letters A, B, C en D. Mijn idee zijn de letters B en D in te geven. Het resultaat zou dan als volgt zijn:
- Letter B
- Letter D

  1. <?php
  2.  
  3. $data = array();
  4. $data = null, "Letter A", "Letter B", "Letter C", "Letter D";
  5.  
  6. ?>
Offline Wim - 11/01/2009 19:21
Avatar van Wim Crew algemeen Je wil dus enkel de positie van het alfabet?
  1. for ($i=97; $i = 122; $i++)
  2. {
  3. $alfabet[chr($i)] = $i-96;
  4. }


$alfabet is dan zo opgebouwd:
$alfabet['a'] = 1;
$alfabet['b'] = 2;
...
$alfabet['z'] = 26;

verder heb je voldoende met PHP.net: strlen. 1 teken uit een string halen kan trouwens met de array notatie, bvb:
  1. <?php
  2. $string = "dit is een string";
  3. echo $string[1]; //i
  4. echo $string[7]; //e
  5. echo $string[9]; //n


succes
Offline vinTage - 11/01/2009 19:24
Avatar van vinTage Nieuw lid
  1. <?php
  2. $array = array(0 =>"", 1=>"a", 2=>"b", 3=>"c" ,4=>"d", 5=>"e", 6=>"f");
  3. $str = "baf";
  4. for($i = 0; $i < strlen($str); $i++)
  5. {
  6. echo array_search($str[$i], $array).",";
  7. }
  8. ?>
Offline Martijn2008 - 11/01/2009 19:45 (laatste wijziging 11/01/2009 19:46)
Avatar van Martijn2008 PHP beginner @VinTage Wel een handig dat scriptje van jou, het werkt goed, totdat ik het iets aanpas. Dan krijg ik allemaal komma's. Het enige wat ik heb aangepast is de array, snap jij misschien waarom het dan niet werkt?

  1. <?php
  2.  
  3. $array = array(null, "Letter A", "Letter B", "Letter C", "Letter D", "Letter E", "Letter F");
  4.  
  5. $str = "baf";
  6.  
  7. for($i = 0; $i < strlen($str); $i++)
  8. {
  9. echo array_search($str[$i], $array).",";
  10. }
  11.  
  12. ?>
Offline vinTage - 11/01/2009 19:53
Avatar van vinTage Nieuw lid
  1. <?php
  2. $array = array(0 =>"", "letter a"=>"a", "letter b"=>"b", "letter c"=>"c" ,"letter d"=>"d", "letter e"=>"e", "letter f"=>"f");
  3. $str = "baf";
  4. for($i = 0; $i < strlen($str); $i++)
  5. {
  6. echo array_search($str[$i], $array); //de commas werden hier aangemaakt
  7. }
  8. ?>
Offline Martijn2008 - 11/01/2009 19:55
Avatar van Martijn2008 PHP beginner Ja precies, waar die komma's vandaan komen begreep ik al. Maar ik snap het verschil niet zo goed tussen het schrijven van een array op jou manier en op mijn manier. Het is toch beide eigenlijk precies hetzelfde?
Offline Wim - 11/01/2009 19:57
Avatar van Wim Crew algemeen komt omdat je zoekt op "a" bvb, en in de array staat nu "Letter a". btw, @vintage: PHP.net: range
Offline vinTage - 11/01/2009 22:11
Avatar van vinTage Nieuw lid Geef nu je code maar eens zoals hij er nu uitziet dan!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.235s