hpvw hat gesagt.:Mein Mathelehrer hätte gesagt: "Simpelste Mathematik!" ... und alle hätten ihm einen Vogen gezeigt.
Ja, ich verstehe den Code, aber ich habe ihn auch geschrieben. Durch Sven's Code steige auch noch nicht durch. Ich kommentiere den Code noch mal, vielleicht ist es dann ja klarer (dabei ist mir aufgefallen, dass man ihn noch etwas vereinfachen konnte und mir ist ein Fehler aufgefallen):Gruß hpvwPHP:<pre> <? //A Lot Numbers beinhaltet alle zu prüfenden Zahlen $aln=array( 170958590, 170958689, 170958789); //ermittelt die größte der zu prüfenden Zahlen, //da man an ihr die maximale Anzahl Ziffern //ablesen kann $max=max($aln); //der aufgerundete Zehnerlogarithmus der //größten Zahl ermittelt, wie viele //Ziffern diese Zahlt hat $nCount=ceil(log10($max)); //Hilfsvariable zum Zählen der gleichen //Anzahl Ziffern, beginnend am Anfang der Zahlen $matchingDigits=0; //Hilfsvariable, die false wird, wenn eine der //Zahlen an der aktuellen (siehe folgende Schleife) //Ziffer keine Übereinstimmung hat $isMatch=true; //Schleife, die $matchingDigits hochzählt, //solange noch alle bis hierhin betrachteten //Ziffern aller Zahlen gleich sind do { //berechnung der ersten "$matchingDigits" Ziffern //der maximalen Zahl // pow(10,irgendwas entspricht 10 hoch irgendwas // Es ist also das Gegenstück zum Logarithmus oben $mn=floor($max/pow(10,$nCount-$matchingDigits)); //Alle Zahlen im Array prüfen foreach($aln as $n) { //berechnung der ersten "$matchingDigits" Ziffern //der bestimmten Zahl im Array $tmp = floor($n/pow(10,$nCount-$matchingDigits)); //Am Ende steht der Vergleich mit den ersten //"$matchingDigits" Ziffern der maximalen Zahl // ergibt dieser false, ist auch $isMatch false $isMatch = $isMatch && ($mn==$tmp); } //die Schleife wird nur fortgesetzt, wenn es //bis hierhin übereinstimmt und $matchingDigits //die Anzahl der Ziffern nicht überschreitet } while ($isMatch && $matchingDigits++<=$nCount); //da der erste Fehler in $matchingDigits mitgezählt wurde, //muss dies nun korrigiert werden. $matchingDigits--; //Die Ausgabe aller Zahlen im Array foreach($aln as $n) { //nun werden alle Zahlen zu einem gleich langen //String, entsprechend der Anzahl Ziffern der //größten Zahl gewandelt $s = str_pad ( $n, $nCount, ' ', STR_PAD_LEFT); //Als übereinstimmende Ziffern werden die ersten //$matchingDigits aus dem String kopiert $eq = subStr ($s,0,$matchingDigits); //Und als nicht übereinstimmende Ziffern der Rest $ne = subStr ($s,$matchingDigits); //nun nur noch die Ausgabe echo "<b>".$eq."</b>".$ne."\n"; } ?> </pre>
*schluck*
Ich hoffe du verdienst 5000 € im Monat oder aufwärts
Wenn nicht, dann mach das