$user = "a"; $answers = array ( "a" => "answer1", "b" => "answer2", "c" => "answer3", "d" => "answer4", "e" => "answer5", "f" => "answer6", "g" => "answer7", "h" => "answer8" ); foreach($answers as $a => $b) { $answer = str_replace($a, $b, $user); }
Eli siis miksi tämä ei toimi... Kun laittaa echo $answer; tämä echoaa tämän "a" :n mikä on $user :n arvo... Eli siis missä vika ?
foreach-looppi toteuttaa ensimmäisellä kierroksella korvauksen, mutta koska käyt läpi kaikki taulukon alkiot, ei viimeisessä alkiossa ("h" => "answer8") enää löydy vastaavuutta ("h" != "a"), ja palautusarvoksi tulee a. Jos haluat lopettaa loopin heti ensimmäiseen vastaavuuteen, pitää tehdä ehtolause:
// foreach-loopin sisälle if ($a == $user) { $answer = str_replace($a, $b, $user); break; }
Ok nyt toimii... Kiitos tuosta ^^
Aihe on jo aika vanha, joten et voi enää vastata siihen.