Zum Inhalt springen

T_GLOBAL und FOREACH


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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;
}
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

$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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...