| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

09-08-2009, 09:29
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
Variable wird nicht initialisiert
Hallo Forum
Mein Problem ist eigentlich simpel, es geht um eine Variable die nicht initialisiert wird. Im Anhang findet ihr ein Zip vor, welches die "Problem-Dateien" enthält.
Ausgeführt wird "ajax.map_bg_attack.php", und dabei kriege ich folgende Ausgabe:
Code:
<script> var mobarray=new Array();changefield(348,1); mobarray[] = '612: :';changefield(612,3); mobarray[1] = '613: :peasantmap.png';changefield(613,3); mobarray[2] = '614: :';changefield(614,3);placepictures(mobarray,true);</script>
(Bitte stört euch nicht an der Formatierung - dafür ist es 1:1 das was ich erhalte.)
Die erste Wertzuweisung von mobarray geschieht nicht auf mobarray[0] sondern mobarray[]. Das liegt irgendwie am "replacer.php", denn dort wird mobcounter mit 0 initialisiert und bei jedem Funktionsaufruf um 1 erhöht.
Sollten weitere Beschreibungen, Dateien oder sonstwas benötigt werden lassts mich wissen.
Vielen Dank im Voraus für Eure Hilfe!
Onyx
|

09-08-2009, 11:12
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
mobarray[] = 'wert' geht in JavaScript nicht und wirft einen Syntax Error. Entweder schreibst du mobarray[0] = 'wert' oder mobarray[mobarray.length] = 'wert'.
|

09-08-2009, 13:12
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
Hallo h3ll
Ja, das ist mir durchaus bewusst. Das ist ja auch der Fehler. Bitte lies die im ersten Post beschriebene Situation, da ist erwähnt, dass eben jener Fehler nicht auftreten sollte, sondern "mobarray[0] = wert" dastehen sollte. Ich hätte gerne herausgefunden, warum die PHP-Variable leer und nicht 0 ist.
Aber trotzdem Danke für deine Antwort
Gruss
Onyx
|

09-08-2009, 14:10
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
pack das $mobcounter = 0; in die Funktion. Und lass den Tinnef mit global. Da bekommst du nur Ärger mit.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

09-08-2009, 14:42
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
Hallo Kropff
Das würde die Funktion des Scripts verändern. Dass $mobcounter ausserhalb der Funktion ist hat den Sinn, dass jedesmal wenn die Funktion ausgeführt wird $mobcounter um eins erhöht wird. Wenn ich $mobcounter in die Funktion mit reinnehmen würde, wäre $mobcounter jedesmal 0.
Wie Du im File "1.php" sehen kannst wird die Funktion 4 mal benutzt, somit erhalte ich (durch $mobcounter) die Ausgabe des sich füllenden Arrays (mobarray).
Danke für deine Antwort, hoffe auch weitere!
Gruss
Onyx
EDIT: Was würdest Du denn anstatt global vorschlagen? $GLOBALS?
EDIT2: Finde bei www.php.net/global keine Problembeschreibungen oder dergleichen. Hat bis jetzt bei mir seinen Zweck auch ganz gut erfüllt...
Geändert von Onyxagargaryll (09-08-2009 um 14:59 Uhr)
|

09-08-2009, 15:04
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Warum musst du die Funktion viermal aufrufen? Das ist doch überflüssig wie ein Kropf. Arbeite mit einem(!) mehrdimensionalen Array und ruf die Funktion nur ein mal auf.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

09-08-2009, 15:10
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
Hallo Kropff
Ja das wäre nat. ein alternativer Workaround. Werde den so einsetzen, wenn niemand mehr mit einer Lösung für mein Problem aufkommen sollte.
Wäre weiterhin froh, wenn jemand eine Lösung/Begründung o.ä. zu dem global-Problem hat.
Danke, Gruss
Onyx
|

09-08-2009, 15:16
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von Onyxagargaryll
Hallo Kropff
Ja das wäre nat. ein alternativer Workaround. Werde den so einsetzen, wenn niemand mehr mit einer Lösung für mein Problem aufkommen sollte.
Wäre weiterhin froh, wenn jemand eine Lösung/Begründung o.ä. zu dem global-Problem hat.
Danke, Gruss
Onyx
|
Bei global verliert man sehr schnell den Überblick, welche Funktion welche Variable verändert. Und wenn du dann irgendwo mal einen Fehler hast, kannst du dich dumm und dämlich suchen.
Ganz schlimm wirds, wenn du zwei Scripts/Projekte zusammen verwenden musst und beide die selben globalen Variablen verwenden und sich dann gegenseitig beeinflussen.
Sowas sollte man von vorne herein vermeiden. Erfahrene Programmierer verzichten deswegen auf global, außer in speziellen Ausnahmefällen, wo es einfach nicht anders geht. Diese sind aber sehr selten und man sollte den Einsatz dann auch wirklich begründen können (Bequemlichkeit, etc. zählt nicht).
|

09-08-2009, 15:34
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
Ok, das mit der Gefahr verstehe ich. Gut dann werde ich die Funktion eben umschreiben.
Danke für die Hilfe, Gruss
Onyx
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|