[PHP] Dumme aber irgendwie doch schwere Frage

casbar

Cadet 4th Year
Registriert
Dez. 2004
Beiträge
115
HALLO!!

Schreibe gerade ein Verwaltungsprogramm in PHP und habe folgende Struktur (grob gemacht):

Code:
if($test)
{
   $check = "HALLO";
}

if(...)
{
   if(...)
   {
       for(...)
       {
           echo $check;
       }
   }

}

Jetzt das Problem:
in der For schleife kennt php die variable check nicht! Wenn ich daraus ne SESSION variable mache klappts auch nicht!

Ich finds merkwürdig, stehe aber jetzt hier und weiss nicht wie ich das am einfachsten machen soll!

Jemand ne idee?

BITTE UM HILFE!!

casbar
 
AW: [PHP] Dumme aber irgendwie doch SCHWERE Frage :) - HILFE!!!

Du musst die Variable außerhalb jeder Klammer deklarieren.
 
AW: [PHP] Dumme aber irgendwie doch SCHWERE Frage :) - HILFE!!!

Die Variable wird ja nur deklariert, wenn $test == true ist.
 
AW: [PHP] Dumme aber irgendwie doch SCHWERE Frage :) - HILFE!!!

Ja das ist mir klar, die muss ja auch nur wenn $test true ist deklariert werden.
Aber die wird, auch wenn $test true ist, nicht angezeigt.

@ quidoff: was meinst du mit "ausserhalb jeder klammer", meinst du nicht im if? aber muss ja im if sein weil die sonst immer da ist!

casbar
 
AW: [PHP] Dumme aber irgendwie doch SCHWERE Frage :) - HILFE!!!

@casbar: Genau das willst du ja. Dass die Variable überall sichtbar ist.
Was soll denn außerdem in der Variable stehen, wenn die Bedingung mit $test nicht erfüllt ist?

Mach die Deklaration von $check einfach über deinem Codeausschnitt.
PHP:
$check = ""; //oder was auch immer halt drin stehen soll

//dein code
 
Zuletzt bearbeitet:
AW: [PHP] Dumme aber irgendwie doch SCHWERE Frage :) - HILFE!!!

Aber der Sinn des Programms ist doch eigentlich, dass $check nur deklariert wird, wenn $test == true ist. So wird die Variable ja auf jeden Fall deklariert.
 
AW: [PHP] Dumme aber irgendwie doch SCHWERE Frage :) - HILFE!!!

Aber wenn er weiter unten die Variable mit echo abruft, dann muss sie auf jeden Fall vorher deklariert worden sein. Die obige Deklaration bei if hat im unteren Scope keine Bedeutung mehr.
 
AW: [PHP] Dumme aber irgendwie doch SCHWERE Frage :) - HILFE!!!

Quidoff schrieb:
Aber wenn er weiter unten die Variable mit echo abruft, dann muss sie auf jeden Fall vorher deklariert worden sein. Die obige Deklaration bei if hat im unteren Scope keine Bedeutung mehr.

Unsinn. Das mag bei C++ vielleicht der Fall sein, bei PHP aber nicht. Der Code ist eigentlich korrekt. Entweder ist der noch in verschiedene Funktionen unterteilt oder irgendeine Bedigung/for-Schleife ist nicht richtig.
 
AW: [PHP] Dumme aber irgendwie doch SCHWERE Frage :) - HILFE!!!

Also wenn ich deine Struktur in ein einfaches Script umwandele, wie das hier:
PHP:
<?php

$test = true;
$foo = true;
$bar = true;

if ($test) {
   $check = "HALLO";
}

if ($foo) {
   if  ($bar) {
           for ($i = 0; $i <= 10; $i++) {
           	echo $check;
           }
   }

}

?>

Dann funktioniert es und gibt "HALLOHALLOHALLOHALLOHALLOHALLOHALLOHALLOHALLOHALLOHALLO" aus :D

Eventuell hast du einen kleinen Fehler der dir noch nicht aufgefallen ist.
 
Zuletzt bearbeitet:
AW: [PHP] Dumme aber irgendwie doch SCHWERE Frage :) - HILFE!!!

@zatarc: Bei dir ist $test ja auch true.
@Floele: Ich muss dir Recht geben, dass $check nach der geschlossenen Klammer weiterhin existiert. Das ist mir auch eben erst aufgefallen. Aber auf jeden Fall muss $check irgendwo davor deklariert worden sein. Wenn du die gesamte Fehlerausgabe mit "error_reporting(E_ALL);" aktivierst, zatarc's Script nimmst und $test auf false setzt, dann siehst du es.

Gängiger Programmierstandard ist es auch eigentlich, alle Variablen am Anfang einer Funktion zu deklarieren.
PHP:
Notice: Undefined variable: check in test.php on line 15
 
Zurück
Oben