Ik heb een script geschreven voor een tot nu toe kleine quiz, met vragen die in een array staan. Ik wil de array door elkaar gooien met shuffle, en vervolgens hier een item uithalen en via een switch een antwoord eraan plakken, echter pakt hij op geen enkele manier een case en krijg ik standaard de foutmelding die ik er in de default bij heb gezet. Ik heb echt geen idee hoe ik dit moet doen, dit is mijn script:

in de head:
<?php
$vragen = array("Van wie was het nummer demons?", "Welke kleur is een banaan?", "Door wie zijn de Harry Potter boeken geschreven?", "Hoe heet deel 2 van The Hobbit?", "Welk dier lijkt het meest op de mens?", "Wie organiseerde de New Year Revolution in Miami, 2014-2015?" );
shuffle($vragen);
$vraag = key($vragen);
$devraag = $vragen[$vraag];
$antwoord = "";
?>

en in de body:
<?php
if (isset($_POST["versturen"]))
{
switch($vragen)
{
case "0"; $antwoord="imagine dragons"; break;
case "1"; $antwoord="geel"; break;
case "2"; $antwoord="j.k. rowling"; break;
case "3"; break;
case "4"; $antwoord="de aap"; break;
case "5"; $antwoord="armando christian perez"; break;
default; echo "foutmelding"; break;
}
$poging = $_POST["poging"];
if ($poging == $antwoord)
{
echo "Goed <br>";
echo "<a href=\"" . $_SERVER["PHP_SELF"] . "\" >Volgende Vraag</a>";
}
else
{
echo "Fout <br>";
echo "Het antwoord was $antwoord <br>";
echo "<a href=\"" . $_SERVER["PHP_SELF"] . "\" >Volgende Vraag</a>";
}
}
else
{
echo "$devraag";
echo "<form name = \"quiz\" method = \"post\" action=\"$_SERVER[PHP_SELF]\">
Antwoord: <input type = \"text\" name = \"poging\" style=\"width: 500px\">
<br><br>
<input type = \"submit\" name = \"versturen\" value = \"Verstuur\">
</form>";
}
?>

Heeft iemand enig idee hoe ik de switch en de array goed kan koppelen?

[size=xsmall]Toevoeging op 27/03/2015 15:40:50:[/size]

Ik heb het overigens ook geprobeerd met een andere vorm van array:
$vragen[0] = "Van wie was het nummer demons?";
$vragen[1] = "Welke kleur is een banaan?";
$vragen[2] = "Door wie zijn de Harry Potter boeken geschreven?";
$vragen[3] = "Hoe heet deel 2 van The Hobbit?";
$vragen[4] = "Welk dier lijkt het meest op de mens?";
$vragen[5] = "Wie organiseerde de New Year Revolution in Miami, 2014-2015?";
Echter kreeg ik dit ook niet voor elkaar
Je moet op een of andere manier onthouden welke vraag is gesteld, zodat je het juiste antwoord kunt vergelijken met het verstuurde antwoord. Dit onthouden vraagnummer is wat je in je switch-statement wilt invullen.

Nu ik er over nadenk: je hebt dit hele switch-statement niet nodig, omdat je vraag en antwoord bij elkaar op kunt slaan in je array. De informatie die je moet versturen blijft hetzelfde (vraag nummer en eigen antwoord).
Doe in plaats van
<?php

case "*";

?>
dit:
<?php

case "*":

?>
Geen Puntcomma maar een dubbele punt
ik had al geprobeerd om vraag en antwoord bij elkaar in een array te doen met "=>" ertussen, maar dat werkte ook niet, dan pakt hij op de een of andere vage manier een random ander antwoord, op deze manier:
$array = ("kip"=>"dier", "keuken"=>"huis");
$vraag = array_rand($array);
$antwoord = $array[$vraag];
maar dan vond het programma de helft van de tijd dat kip bij huis hoorde en keuken bij dier...

ik heb ondertussen iets nieuws geprobeerd met de switch:

switch($devraag)
{
case $devraag== "Van wie was het nummer demons?"; $antwoord="imagine dragons"; break;
case $devraag== "Welke kleur is een banaan?"; $antwoord="geel"; break;
case $devraag== "Door wie zijn de Harry Potter"; $antwoord="j.k. rowling"; break;
case $devraag== "Hoe heet deel 2 van The Hobbit?"; break;
case $devraag== "Welk dier lijkt het meest op de mens?"; $antwoord="de aap"; break;
case $devraag== "Wie organiseerde de New Year Revolution in Miami, 2014-2015?"; $antwoord="armando christian perez"; break;
default; echo "foutmelding"; break;
}

nu krijg ik er meestal geen default uit, maar weer random antwoorden...

[size=xsmall]Toevoeging op 27/03/2015 16:02:10:[/size]

de dubbelepunt of puntkomma maakt niet uit, net geprobeerd maar maakt geen verschil

[size=xsmall]Toevoeging op 27/03/2015 16:02:21:[/size]

de dubbelepunt of puntkomma maakt niet uit, net geprobeerd maar maakt geen verschil

[size=xsmall]Toevoeging op 27/03/2015 16:05:07:[/size]

Thomas van den Heuvel, weet u ook hoe ik het voor elkaar kan krijgen dat het programma onthoudt welke vraag is gekozen?
Nogmaals, Gebruik een dubbele punt (:).

Dit nieuwe script gaat sowieso niet verken.

En bij case 3 staat niets in
case 3 weer ingevuld, had per ongeluk weggehaald, dubbele punten heb ik, maar wat zou ik anders kunnen proberen?
Meesturen van het vraag-id via een hidden veld:
<input type="hidden" name="vraag_id" value="<?php echo $vraag ?>" />

Mogelijke structuurverbetering van vragen-array:
<?php
$vragen = array(
    // vraag 0
    array(
        'vraag' => '...',
        'antwoord' => '...',
    ),
    // vraag 1
    array(
        'vraag' => '...',
        'antwoord' => '...',
    ),
    // etc.
);
/*
voorbeelden:
$vragen[0]['vraag'] bevat de vraag van vraag nummer 0
$vragen[1]['antwoord'] bevat het antwoord van vraag nummer 1
*/
?>

Reageren