Mailinglisten-Archive |
Hi Martin, Am Montag, 10. Juli 2006 10:34 schrieb Martin Kutter: > Hallo Liste > > Für einen einfachen MATHCHA (anstelle Bilder-CAPTCHA eine einfache > Rechenaufgabe) möchte ich Rechenaufgaben erstellen. > Dabei soll der Oparand nicht immer derselbe sein, sondern 'random' > erzeugt werden (z.B. '+', '*' etc.). > > Anstelle eines switch() (jede Rechenoperation in einem case), hat > mich die 'dynamische' Verarbeitung eines 'erzeugten' Operanden (aus > einem Array) nicht losgelassen. > Doch leider funktioniert's nicht :( > > [code Bsp.] > // Array Operand > $aOperand = array( '+', '*' ); > > // Count Array items and sub 1 > $numOperand = count( $aOperand ) - 1; > > // Create random Key > $n = rand( 0, $numOperand ); > > // Generate Arithmetic Problem > $result = $int1 . $aOperand[ $n ] . $int2; > > ... > [/code] es gibt z.B. folgende Möglichkeiten: 1. eval('$result = '.$int1.$aOperand[ $n ].$int2.';'); echo $result; 2. if ($aOperand[ $n ] == '+') { $result = $int1 + $int2; } else if ($aOperand[ $n ] == '*') { $result = $int1 * $int2; } echo $result; Variante 1. mit eval() würde ich nur wählen, wenn die Variablen nicht von außen gesetzt werden können, zumindest nicht der Operand. Mit intval() könntest Du $int1 und $int2 notfalls zwangskonvertieren. :-) Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive