Hello @all,
es steckt ein ganz merkwürdiger Fehler in der Applikation / Klasse, den ich nicht nachvollziehen kann, der aber sowohl auf meinem lokalen LAMPP, als auch auf dem öffetnlich zugänglichen Debian_4.0 auftritt.
gibt man die Aufgabe "e^pi" ein, so kommt in der normalen Verwendung der Klasse
Undefined operator 'e^pi'
ändere in in der Operatorenliste das 'exp' zu 'axp' oder das 'e' zu 'o' und benutze dann den Operator entsprechend, dann funktioniert es; genauso, wenn ich 'exp' auskommentiere.
Ich habe das soweit debugged, wie ich konnte und musste feststellen, dass die Funktion
array_key_exists('e', $_operation) ### vereinfacht dargestellt
nicht wie erwartet arbeitet.
private $_operation = array (
'(' => array ('left bracket', 0),
')' => array ('right bracket', 1),
'+' => array ('sum', 1, 2, '_sum'),
'-' => array ('difference', 1, 2, '_difference'),
'*' => array ('multiplication', 2, 2, '_multiplication'),
'/' => array ('division', 2, 2, '_division'),
'r' => array ('root', 3, 2, '_root'),
'^' => array ('power', 3, 2, '_power'),
'sin' => array ('sine', 3, 1, '_sin'),
'cos' => array ('cosine', 3, 1, '_cos'),
'tan' => array ('tangent', 3, 1, '_tan'),
'asin' => array ('asine', 3, 1, '_asin'),
'acos' => array ('acosine', 3, 1, '_acos'),
'atan' => array ('atangent', 3, 1, '_atan'),
'sqrt' => array ('square root', 3, 1, '_sqrt'),
# 'exp' => array ('power of e', 3, 1, '_exp'),
'log' => array ('logarithm', 3, 1, '_log'),
'ln' => array ('natural logarithm', 3, 1, '_ln'),
'E' => array ('power of 10', 3, 1, '_E'),
'abs' => array ('absolute value', 3, 1, '_abs'),
'!' => array ('factorial', 3, 1, '_factorial'),
'pi' => array ('value of pi', 4, 0, '_const_pi'),
'e' => array ('value of e', 4, 0, '_const_e'),
'mod' => array ('modulo', 3, 2, '_mod'),
'div' => array ('integer division', 3, 2, '_div')
);
Ich habe dann versucht, das Problem zu isolieren, aber da ist es nicht reproduzierbar.
Hier funktioniert es, wie gedacht.
<?php ### array_key_exists.php ###
Test, ob Funktion buggy ist. e, exp
header('Content-Type: text/plain');
class buggy
{
public $_stack = array(
'amp' => '0-amp',
'alles' => '1-alles',
'a' => '2-a',
'bau' => '3-bau',
'exp' => '4-exp',
'b' => '5-b',
'c' => '6-c',
'cut' => '7-cut',
'e' => '8-e',
);
function checkit()
{
echo "b: ";
if (array_key_exists('b', $this->_stack)) echo "found\r\n";
echo "a: ";
if (array_key_exists('a', $this->_stack)) echo "found\r\n";
echo "c: ";
if (array_key_exists('c', $this->_stack)) echo "found\r\n";
echo "e: ";
if (array_key_exists('e', $this->_stack)) echo "found\r\n";
}
}
$test = new buggy();
$test->checkit();
?>
Hat einer 'ne Idee?
Das Script und die Klasse ist unter http://selfhtml.bitworks.de/snippets/calculator/ auch downloadbar. Wäre nett, wenn sich das noch mal jemand anders angucken könnte.
Ich muss da doch irgendwas übersehen haben.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg