Habe mich jetzt doch mal hin gesetzt, weil ich grad mal Lust hatte. Und folgendes kam dabei raus:
function modulo($string_1,$string_2)
{
$zahl =$string_2;
settype($zahl,"integer");
if(strlen($string_1) < strlen($string_2))
return $string_1;
else
{
$zusatz = 0;
for($i=0;$i < strlen($string_1);++$i)
{
$zusatz = ($zusatz > 0) ? $zusatz."".substr($string_1,$i,1) : "".substr($string_1,$i,1);
settype($zusatz,"integer");
$zusatz = $zusatz%$zahl;
}
return $zusatz;
}
}
function summe($string_1,$string_2)
{
$laenge = (strlen($string_1) > strlen($string_2)) ? strlen($string_1) : strlen($string_2);
$zahl = "";
$tmp = 0;
for($i=0;$i < $laenge;++$i)
{
if($i >= strlen($string_1))
{
$tmp_2 = substr($string_2,strlen($string_2)-1-$i,1);
settype($tmp_2,"integer");
$zahl_tmp = ($tmp+$tmp_2)."";
if(strlen($zahl_tmp) > 1)
{
$tmp = substr($zahl_tmp,0,1);
settype($zahl_temp,"integer");
}
$zahl = $zahl_tmp.$zahl;
}
if($i >= strlen($string_2))
{
$tmp_1 = substr($string_1,strlen($string_1)-1-$i,1);
settype($tmp_1,"integer");
$zahl_tmp = ($tmp+$tmp_1)."";
if(strlen($zahl_tmp) > 1)
{
$tmp = substr($zahl_tmp,0,1);
settype($zahl_temp,"integer");
}
$zahl = $zahl_tmp.$zahl;
}
else
{
$tmp_1 = substr($string_1,strlen($string_1)-1-$i,1);
settype($tmp_1,"integer");
$tmp_2 = substr($string_2,strlen($string_2)-1-$i,1);
settype($tmp_2,"integer");
$zahl_tmp = ($tmp+$tmp_1+$tmp_2)."";
if(strlen($zahl_tmp) > 1)
{
$tmp = substr($zahl_tmp,0,1);
settype($tmp,"integer");
$zahl_temp = substr($zahl_tmp,1,1);
}
$zahl = $zahl_tmp.$zahl;
}
}
return $zahl;
}
Alles anzeigen
Die Funktion summe bildet die summe von 2 Strings und liefert sie als String zurück.
Die Funktion modulo errechnet den Rest der Division, der Zahl $string_1 durch $string_2. Und sie liefert das Ergebnis ebenfalls als String zurück. Allerdings ist noch ein Problem bei dieser Funktion vorhanden (welches für die Anwendung in deinem Fall nicht stört): Der Wert $string_2 darf nicht höher als 2147483647 sein.
Was du jetzt noch machen musst ist, dass du die Werte der einzelnen Felder immer mit summe() zusammenrechnest und als String abspeicherts und dann per modulo()-Funktion vergleichst.
Falls du die Zahlen, welche ja nun als Daten-Typ String vorliegen, doch noch als double brauchst (was eigentlich Schwachsinn wäre weil dies ungenauer ist) kannst du folgende Zeilen benutzen:
$zahl_als_double = $zahl[$reihe][$platz];
settype($zahl_als_double,"double"); //Jetzt ist $zahl_als_double der Double-Wert von $zahl[$reihe][$platz]