zufälliges Wort ausgeben und Konsonanten zählen -Hilfestellung-

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Schwarzwild80

Grünschnabel
Hallo zusammen,

ich benötige wieder Eure Hilfe und würde mich sehr über einen konstruktiven Gedankenanstoß/Hilfestellung von Euch Profis freuen.
Aufgabe:
Es sind 10 Wörter gegeben. Davon soll 1 Wort zufällig ausgegeben und die Konsonanten gezählt werden.

Die Ausgabe soll z.B. so aussehen: "Das Wort Automobil hat 4 Zeichen, die keine Vokale sind."

Meine bisherige Recherche hat ergeben das die Funktion array_rand dafür passend wäre. Mir fehlt aber leider noch das Wissen, dies zu programmieren.

PHP:
  <?php
 
  $woerter = ["Maus","Automobil","Schifffahrt","Hund","Katze","Ziege","Stanniolpapier","Elefant","Isopropylalkohl","Schwimmbad"];
  $vokale = ["a","e","i","o","u"];
  array_rand($woerter, 1);


    echo "Das Wort($woerter), ";
    

echo "</p>";

?>

Ich weiß das es nicht viel ist was ich bisher geschrieben habe, mir fehlt einfach hier der "Anstoss".

Danke schon im Voraus für Eure Hilfe.

Gruß
Schwarzwild80
 
Alternative für anstatt durch das array "vokale" zu laufen: PHP: strcspn - Manual

Ich hatte mal ne Funktion "CountChars" in VBA geschrieben (nicht wirklich kompliziert) welche StrCSpn benutzt. Vielleicht kann man das nach PHP portieren?
 
Eine weitere Variante
Da lassen sich auch noch andere Varianten finden :cool: Aber ob die dann besser sind ... :D

Mal etwas umständlich:
PHP:
<?php
   $wort = "Automobil";
  
   $vokale = "aeiou";
  
   $count = 0;
  
   for ($i = 0; $i < strlen($wort); $i++)
   {
       for ($j = 0; $j < strlen($vokale); $j++)
       {
          if ($wort[$i] == $vokale[$j])
             $count++;
       }
   }
  
   echo $count . " Vokale";
?>
 
Zuletzt bearbeitet:
Da lassen sich auch noch andere Varianten finden :cool: Aber ob die dann besser sind ... :D
Da der OP selbst zugibt, Anfänger zu sein, und vor allem:
mir fehlt einfach hier der "Anstoss".
stosse ich hiermit.....

Klar dass es verschiedene Möglichkeiten gibt.
Die erste Variante worauf man eigentlich selbst kommen sollte ist "klassisch zu zählen" (Meine Antwort in #2)
Die erste Alternative (Meine Antwort in #3) ist in Bezug zu "klassisch zählen", jedoch eine "besondere" Funktion dafür zu verwenden

Die letzte Alternative (Meine Antwort in #5) ist ein komplett anderer Ansatz, welcher aber zum selben Ergebnis führt.

Ich hör mal mit anstossen auf, sonst verklagt mich OP noch wegen blauer Flecken.....
 
Moin zusammen,

Vielen Dank an @bdt600 und @Zvoni für die konstruktive Unterstützung. Ihr könnt soviel gedanklich "anstossen" wie Ihr wollt so lange es zielführend ist. :)

Hier "meine" Lösung. Ich habe versucht das Skript sauber zu formatieren. Ich hoffe es ist mir geglückt.

PHP:
  <?php
 
 $woerter = ["Maus","Automobil","Schifffahrt","Hund","Katze","Ziege","Stanniolpapier","Elefant","Isopropylalkohl","Schwimmbad"];
 $vokale = ["a","e","i","o","u"];
 
 shuffle($woerter);
 
 $temp =$woerter[0];
    
foreach($vokale as $vokal)
{
    $temp = str_replace($vokal,'',$temp);
}
    
echo "Das Wort ".$woerter[0]. " hat " .strlen($temp). " Zeichen, die keine Vokale sind.";
 
?>


Auf weitere gute Zusammenarbeit :cool:

Gruß
Schwarzwild80

 
@Schwarzwild80
Und so sieht die Kurzform deines Scriptes aus:
PHP:
<?php
  $woerter = ["Maus","Automobil","Schifffahrt","Hund","Katze","Ziege","Stanniolpapier","Elefant","Isopropylalkohl","Schwimmbad"];
  $vokale = ["a","e","i","o","u"];
 
  shuffle($woerter);
    
  $temp = str_replace($vokale,'',$woerter[0]);
    
  echo "Das Wort " . $woerter[0] . " hat " . strlen($temp) . " Zeichen, die keine Vokale sind.";
?>
 
@Schwarzwild80
Sieh genau hin, dann verstehst du warum bdt600 darauf rumreitet, die Doku genau zu lesen:
aus der Doku (Link oben)
PHP:
str_replace(
array|string $search,
array|string $replace,
string|array $subject,
int &$count = null
): string|array

Und hier stehts....
Ist search ein Array und replace ein String, dann wird dieser String für jeden Wert von search angewandt.
 
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück