derBernd: PHP - Kleines Problem bei Array-Vergleich

Beitrag lesen

Hallo zusammen,

vorweg: ich bin noch ziemlich neu in der Programmiererei und in PHP, habt also u.U. etwas Nachsicht ;-)

Mein Problemchen:

für ein kleines Ratespiel möchte ich das Lösungswort mit dem Lösungsvorschlag des Spielenden vergleichen, das klappt soweit auch ganz gut bis auf eine kleine Unschönheit wenn im Lösungsvorschlag ein Buchstabe doppelt vorkommt. Hier mal der bisherige Quelltext:

<?
$solution_word = 'abcde';
$provided_solution = 'acbda';

// convert solution-word to array
$aLetters = str_split(strtoupper($solution_word));

// convert provided-solution to array
$aSolution = str_split(strtoupper($provided_solution));

// check solution against solution-word
foreach ($aSolution as $ks => $vs) {
   if ($aLetters[$ks] == $vs) {
      $aStatus[] = 'T';
   } else {
      if (in_array($vs, $aLetters)) {
         $aStatus[] = 'P';
      } else {
         $aStatus[] = 'F';
      }
   }
}

// show the resluts array
echo '<pre>';
print_r($aStatus);
echo '</pre>';
?>  

Das Script gibt mir also ein Array zurück in dem für jeden Buchstaben des Lösungswortes ein Status angegeben ist:

"T" - Buchstabe kommt im Lösungswort vor und ist an der richtigen Position

"F" - Buchstabe kommt nicht im Lösungswort vor

"P" - Buchstabe kommt im Lösungswort vor, ist aber an der falschen Position

Wenn nun ein Buchstabe im Lösungsvorschlag doppelt vorkommt (so wie in obigen Beispiel), dann wird das zweite Vorkommen fälschlicherweise als "P" markiert sollte aber "F" sein.

Mir ist schon klar, das ich in dem ersten else-Zweig noch irgendwas machen muß, komme aber nicht dahinter was und wie, wenn mich da mal jemand in die richtige Richtung schubsen könnte?

Vielen Dank derBernd