OnkelPaddy Geschrieben 5. Januar 2006 Teilen Geschrieben 5. Januar 2006 Hallo zusammen, ich habe mit meinem PHP Script zwei Probleme und hoffe ihr könnt mir weiter helfen: 1. Ich durchlaufe in einer Funktion das übergebene Array mit einer FOEACH Schleife., etwa so sieht es aus: function meine Funktion($Array) { foreach ($meineFunktion as $var) { print $var; } } Als Resultat erhalte ich aber nicht wie erwartet den Inhalt des Arrays sondern: ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArraY 2. Problem: Ich habe in dem Script eine Klasse mit mehreren Funktionen geschrieben. Da ich bestimmte Konstanten, Variablen und Arrays in jeder Funktion mehrfach benötige, habe ich die Definition der Konstanten, Variablen und Arrays VOR der Klassenimplementierung definiert. Also etwa so. $Variable ="Wert"; $mehrVariable="was anderes"; class MeineKlasse { function MeineKlasse(irgendwas) { print "Ausgabe".global $Variable; } } Als Resultat erhalte ich: Parse error: parse error, unexpected T_GLOBAL in...... ich habe es auch schon ohne global versucht, aber dann erhalte ich wie zu erwarten nichts, da die Variable hier neu erzeugt wird. Was habe ich falsch gemacht??? Ich verwende den Apache2 mit PHP 4.4.0 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 5. Januar 2006 Teilen Geschrieben 5. Januar 2006 ich vermute mal, dass du folgendes willst: function meine Funktion($Array) { foreach ($Array as $var) { print $var; } } [/PHP] und das zweite geht so: [PHP] $Variable ="Wert"; $mehrVariable="was anderes"; class MeineKlasse { function MeineKlasse(irgendwas) { global $Variable; # aehnlich wie C print "Ausgabe".$Variable; } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 5. Januar 2006 Teilen Geschrieben 5. Januar 2006 Hi, ausserdem solltest du konstanten mit define() definieren. http://www.php.net/define Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
OnkelPaddy Geschrieben 5. Januar 2006 Autor Teilen Geschrieben 5. Januar 2006 Hallo, zum ersten Beitrag: Ja genau das habe ich gemeint. Ich habe mich da nur beim Posten verschrieben. Ich habs im Programm so stehn wie du korrigiert hast. Aber dennoch bleibt das Problem: Die Variable $var wird als Array angelegt. Ich muß das entstandene Array mit $var[0] auf den Wert prüfen. Wieso das allerdings ein Array geworden ist, verstehe ich nicht. Es stehen da Strings drin. Der Index von $var[1] gibt mir fortlaufend die Zahlen von 1 bis 17. Falls jemand mir das noch erklären kann, warum aus $var ein Array und nicht eine einfache Variable geworden ist, wäre ich sehr dankbar. Ansonsten ist das Problem aber vorerst gelöst. Zum zweiten Problem: Vielen Dank. Das habe ich gesucht!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 5. Januar 2006 Teilen Geschrieben 5. Januar 2006 $var = array(); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
OnkelPaddy Geschrieben 5. Januar 2006 Autor Teilen Geschrieben 5. Januar 2006 $var = array(); Verstehe nicht, was du mir damit mitteilen wolltest. Es verhält sich so, wie du es hier definiert hast, aber genau dass erwarte ich ja nicht. Also $var wird das erste mal im Programm an der Stelle erwähnt, wo die FOREACH Schleife implementiert wird. Also: foreach ($Array as $var) { print $var; }[/PHP] Zuvor wurde der Bezeichner $var nie verwendet. Laut PHP Handbuch und diverser zitierter Dokus müsste $var jeweils den Wert des Arrays beinhalten, an dem der Zeiger steht. Deshalb wundert es mich, dass $var ein Array und keine einfache Variable ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 5. Januar 2006 Teilen Geschrieben 5. Januar 2006 du hast unrecht. $var beinhaltet den string Array ... du hast ja keine neue zeile gemacht. ergo ist was mit deinem $Array nicht in ordnung... ich dachte du wolltest $var als array abspeichern Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 5. Januar 2006 Teilen Geschrieben 5. Januar 2006 Dein Array ist mehrdimensional (in deinem Fall zweidimensional). Das bedeutet, dass die Elemente in deinem Array wieder Arrays sind. Die foreach-Scheife arbeitet nur mir dem ersten Array. Wie hast du denn Werte in das Array eingetragen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
soeren Geschrieben 5. Januar 2006 Teilen Geschrieben 5. Januar 2006 function meine Funktion($Array) { foreach ($meineFunktion as $var) { print $var; } } Als Resultat erhalte ich aber nicht wie erwartet den Inhalt des Arrays sondern: ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArraY Das darf so eigentlich garnicht laufen, wg. dieser Zeile: foreach ($meineFunktion as $var) Du willst ja das Array aufrufen, also: foreach ($Array as $var) Da es aber scheinbar dennoch läuft (wahrscheinlich hast du dich nur hier im Board vertippt), meine Idee: Das übergebene Array ist ein mehrdimensionales Array, d.h. dass z.B. $Array[0] keinen Wert, sondern ein weiteres Array darstellt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
OnkelPaddy Geschrieben 5. Januar 2006 Autor Teilen Geschrieben 5. Januar 2006 Hallo, vielen Dank. Aber ich wurde bereits auf meinen Fehler in meinem Post hingewiesen. Natürlich übergebe ich das Array an die Funktion und lese dieses auch durch. Das hatten wir schon..... Das mein Quellcode mir ein Array ausgibt, habe ich auch bereits gemerkt. Aber der Grund ist mir schleierhaft. Das Array wird mit der Funktion Arraypush gefüllt. In etwa so: $Array = array(); $Wert ="00"; array_push($Array, $Wert); [/PHP] So in etwa. Die genaue Syntax liegt mir augenblicklich nicht vor (Feierabend). Sollte die Funktion falsch geschrieben sein, bitte ich dies zu entschuldigen. Ich denke aber, meine Vorgehensweise wird nun klar sein.... Ich habe die Programme mit dem aktuellen XAMPP lokal entwickelt. Hier ist PHP 5.XX installiert. Habe dann alles auf den Zielserver (Apache2 unter W2K Server) portiert. Hier läuft PHP 4.4.0 Lokal, also mit XAMPP hat es wunderbar geklappt. Ich vermute daher eine Anpassung von array_push oder irgendeiner anderen verwendeten Funktion Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pelz Geschrieben 7. Januar 2006 Teilen Geschrieben 7. Januar 2006 Hast Du Dein Array schonmal mit print_r ausgegeben? Syntaktisch sieht das mit dem array_push eigentlich korrekt aus. Frage mich eigentlich wofür Du für einen Wert aber diese Funktion überhaupt benutzt. Aus der Doku: Anmerkung: Wenn Sie array_push() verwenden, um ein Element an ein Array anzuhängen, ist es besser $array[] = zu benutzen, da dies den zusätzlichen Aufwand vermeidet, eine Funktion aufzurufen Anmerkung: array_push() gibt eine Warung aus, wenn das erste Argument kein Array ist. Dies unterscheidet sich vom Verhalten von $var[], welches ein neues Array erzeugt. Vielleicht solltest Du mal den Code ordentlich hier rein posten, wenn Du auf der Arbeit bist. Diese einzelnen Fragmente bringen nicht viel. ;-) gruß vom pelz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.