000
03.12.2002, 13:24
Ornest
|
Ja, schon wieder ich :)
Also, ich habe eine Frage und zwar was ist an diesem Code Evil? Irgendwas muss ja ziemlich Evil sein ...
<?PHP
class Test { var $nummer; function Test() { $this->nummer = array(5); for($i = 0; $i <= count($this->nummer); $i++) { $wert = mt_rand(0, 10); $this->nummer[$i] = $wert; } } } $test = new Test();
?>
Irgendwas stimmt mit der For-Schleife nicht, soweit bin ich auch gekommen. Bei mir will er die Seite einfach nicht laden ... d.h. er lädt und lädt ...
P.S.: Irgendwas ist auch an lädt evil, oder ist das so richtig geschrieben O_o
--
Dieser Beitrag wurde am 03.12.2002 um 13:26 von Ornest bearbeitet.
|
|
Profil || Suche
|
001
03.12.2002, 14:12
Andy_
|
Ähm, wie soll das auch aufhören, du setzt eine 5 an die erste Index stelle (0) des Arrays, dann setzt du in der for schleife immer ein neues Element in das Array, bzw. überschreibt es. Jedenfalls machts keinen Sinn, vielleicht erklärst du dein Ziel mal etwas einleuchtender.
Wenn du mit $this->nummer = array(5); wie in manch anderen Programmiersprachen ein Limit setzen wolltest, PHP ist was Speicher anbelangt jedoch ziehmlich freizügig, du setzt nur einen Integer auf den ersten Freien Index des Arrays.
--
42 Es gibt keinen Sinn des Lebens.
|
|
Profil || Suche
|
002
03.12.2002, 15:40
Ornest
|
Ich will einfach einen Array mit 5 Elementen (für jedes Objekt) erzeugen ohne
$this->nummer[0] = mt_rand(0, 10); $this->nummer[1] = mt_rand(0, 10); $this->nummer[2] = mt_rand(0, 10); $this->nummer[3] = mt_rand(0, 10); $this->nummer[4] = mt_rand(0, 10);
schreiben zu müssen. Ich will, dass die For-Schleife mir das halt abnimmt. Ich glaube ich hab da irgendwie was falsch verstanden O_o
Arx, kann das sein dass man das garnicht so macht mein Lieber Herr Ornest? Grrr, wo habe ich das nur her?
--
Dieser Beitrag wurde am 03.12.2002 um 15:59 von Ornest bearbeitet.
|
|
Profil || Suche
|
003
03.12.2002, 17:14
Fraghunter
|
hallo? Du bist hier nicht bei C ;-) hat sich was mit dem definieren und dimensionieren (und was es da noch alles giebt :D) von Arrays. Ich will das mal ausführlich erläutern:
<?PHP class Test { var $nummer; function Test() { $this->nummer = array(5); // das erstellt ein array mit einem Element, und zwar: // nummer[0] = 5; for($i = 0; $i <= count($this->nummer); $i++) { $wert = mt_rand(0, 10); $this->nummer[$i] = $wert; } //diese Schleife wird folgendes machen: //1. $i=0, 0 <= 1 (Anzahl der Elemente des Arrays) - true, also Ausführen. $this->nummer[0] = mt_rand(0, 10); //leicht gekützt, sonst wird der Post so lange ;-) //2. ++$i=1, 1 <= 1 - true, weiter gehts $this->nummer[1] = mt_rand(0, 10); //unser Array hat jetzt 2 Elemente: //nummer[0], nummer[1] /\ // || //3. ++$i=2, 2 <= 2 - true (------------------------------------++) $this->nummer[2] = mt_rand(0, 10); //unser Array hat jetzt 3 Elemente: //nummer[0], nummer[1], nummer[2] //4. Und so weiter... } } $test = new Test();
?>
So, du siehst - selbst wenn array(5); geklappt hätte, wäre das nichts geworden. Wie gehts richtig? so:
<?PHP class Test { var $nummer; function Test() { while ($i++ <= 5) { mt_srand((double)microtime()*1000000); $this->nummer[$i] = mt_rand(0, 10); //1. srand liefert besere Zufallszahlen //2. jedesmal neuen Startwert festlegen - sollte besserer Zufallsgenerator sein, // als wenn du den nur einmal festlegst. //3. while ist schneller ;-) } } } $test = new Test(); ?>
Hoffe ich konnte dir helfen. Du solltest dir aber angewöhnen immer vor der Benutzung eines Befehls, den du nicht genau in php kennst, auf der php Website nachzuschauen. Das geht ziemlich schnell, wenn du dir das richtig eingerichtet hast, und php hat einfach die beste hp und referenz, die es giebt. http://www.php3.de/tips (php3.de ist ein Mirror in deutschland von php.net - einfach nur schneller, sonst ist alles gleich.) schau da mal. besonders der "Adding the Quick Reference to Internet Explorer 5" ist super (geht auch mit dem 6er)
--
Nihil timeo, nulla re opprimor, nulli periculo cedo. www.TheDoenerKing.de
|
|
Profil || Suche
|
004
03.12.2002, 17:22
Ornest
|
Jaaaa, das wars, danke ;) btw. nich C sondern Java :)
--
|
|
Profil || Suche
|
005
03.12.2002, 17:38
CN
|
//3. while ist schneller ;-) w00t? die sollten fast gleichschnell sein es ist doch nur ne andre syntax
--
Dieser Beitrag wurde am 03.12.2002 um 17:40 von CN bearbeitet.
|
|
Profil || Suche
|
006
03.12.2002, 18:26
Fraghunter
|
ja, fast gleichschnell, allerdings ist while etwas schneller. Und vor allem hab ich die Erfahrung gemacht, dass die Leute hinterher eine viel bessere Lösung finden, wenn sie versuchen while schleifen zu nutzen.
--
Nihil timeo, nulla re opprimor, nulli periculo cedo. www.TheDoenerKing.de
|
|
Profil || Suche
|
007
03.12.2002, 18:40
CN
|
naja ich hab ein und dasselbe script geschrieben einmal mit while und einmal mit for, das bis 10^6 hochzählt mit while hats 55 und mit for 54 sec gedauert das auszuführen .. also dann wäre while ca 0,02% schneller sobei ich den genauen zeitwert nich mehr hab.. aber das is extrem wenig
--
|
|
Profil || Suche
|