Hi!
Wie schon gesagt, greifst du damit nicht dem Zufall sondern der leichteren Erratbarkeit unter die Arme. Lass die Anweisung komplett weg, PHP hilft sich selbst beim Zufall.
Im Ignorieren bist du gut, der überflüssige srand()-Aufruf ist ja immer noch in deinem Code.
Also werden an der oberen Stelle ganz normal nur die wörter zufällig angeordnet und nicht in $karten[0], $karten[1], $karten[2] gespeichert.
Das Array $karten wird gemischt. Was nun dort enthalten ist, kannst du mit einer Kontrollausgabe anzeigen: var_dump() eignet sich für Kontrollausgaben immer, print_r() stellt Arrays etwas übersichtlicher dafür aber auch etwas ungenauer dar (keine Anzeige des Typs). In beiden Fälle empfiehlt es sich bei komplexen Strukturen vorher ein <pre> auszugeben oder in die Quellcode-Ansicht des Browsers zu schauen.
Durch die Kontrollausgabe wirst du feststellen, dass die Elemente im Array sehr wohl enthalten sind. $karten[0], $karten[1] und $karten[2] sind ja keine eigenständigen Variablen sondern Zugriffe auf die Elemente des Arrays.
Damit bekomme ich dann bei den switches unten keine ausgabe :(
Dann hast du ein anderes Problem, vielleicht stimmt der Scope nicht, vielleicht hat es eine andere Ursache. Setz doch mal (was zum Entwickeln immer eine gute Idee ist) das error_reporting auf E_ALL (und display_errors auf on), dann siehst du möglicherweise einen Hinweis, der weiterführend sein kann.
Lo!