MartinM: Variablen vorher definieren

Hallo,

ich will am Anfang von jedem meiner PHP Scripts, zur besseren Übersicht alle Variablen nennen, und gegebenenfalls  Werte zuweisen.

Wenn ich allerdings Variablen einfach aufzähle und keinen Wert zuweise, wirft mir PHP einen Fehler aus.

Ich weis (aus dem Informatikunterricht, lang lang ist's her), dass bei vielen Programmiersprachen Variablen erst definiert werden müssn, befor man sie verwendet werden können. So einen Befehl muss es doch auch in PHP geben.

Ein Beispiel:

<?
//  MP = Menüpunkt
//  ID = Identifikationsnummer
//  Alle Variablen auf einen Blick
$intMPID = 2;
$intMaxAnzahlMP = 6;
$arrStyleMP;
$intCount;

//BEI DEN LETZTEN BEIDEN TRITT EIN FEHLER AUF
//Notice: Undefined variable: intCount in
//C:\iis\Inetpub\wwwroot\hauptseite.php on line 10

//  for(Startwert; Bedingung; Zähler)
for ($intCount = 0; $intCount < $intMaxAnzahlMP; $intCount++)
 {
  $arrStyleMP = array($intCount => "normal");

if ($intCount == $intMPID)
  {
  $arrStyleMP = array ($intCount => "highlight");
  }

echo $arrStyleMP[$intCount];
 }

?>

Danke

Martin

  1. Wenn ich allerdings Variablen einfach aufzähle und keinen Wert zuweise, wirft mir PHP einen Fehler aus.

    Hi

    Ich weiß nicht, ob es eine spezielle Funktion gibt, aber du könntest "null" benützen. Also:

    $arrStyleMP = null;

    Dann hat die Variable keinen Wert.

    isset($arrStyleMP) gibt aber meines wisses dann auch entsprechen FALSE zurück.

    Grüße

    Heizer

    1. morgens,

      du könntest "null" benützen. Also:
      $arrStyleMP = null;
      Dann hat die Variable keinen Wert.

      Doch, natürlich hat sie einen, nämlich den soeben zugewiesenen String "null".

      Grüße aus Berlin

      Christoph S.

      1. morgens,

        du könntest "null" benützen. Also:
        $arrStyleMP = null;
        Dann hat die Variable keinen Wert.

        Doch, natürlich hat sie einen, nämlich den soeben zugewiesenen String "null".

        Grüße aus Berlin

        Christoph S.

        Hallo,

        warum gibt dann

        $temp = null;
        echo "$temp: ".$temp."<br>";
        echo "isset? ".isset($temp)."<br>";

        :
        isset?

        aus?

        freundliche Grüße nach Berlin

        1. hi,

          warum gibt dann
          $temp = null;
          echo "$temp: ".$temp."<br>";
          echo "isset? ".isset($temp)."<br>";
          :
          isset?
          aus?

          Weil der Variablen $temp in diesem Fall ein neuer Wert zuzuweisen versucht wurde (übrigens auf fehlerhafte Weise). Ich habe die zugehörige Stelle des Manuals bereits angegeben  -  wer sich mit den Variablen bereits auf Kriegsfuß befindet, sollte meines Erachtens einen Kurs in der Volkshochschule belegen.

          Grüße aus Berlin

          Christoph S.

          1. 你好 Christoph,

            warum gibt dann
            $temp = null;
            echo "$temp: ".$temp."<br>";
            echo "isset? ".isset($temp)."<br>";
            :
            isset?
            aus?

            Weil der Variablen $temp in diesem Fall ein neuer Wert zuzuweisen
            versucht wurde (übrigens auf fehlerhafte Weise). Ich habe die zugehörige
            Stelle des Manuals bereits angegeben  -  wer sich mit den Variablen
            bereits auf Kriegsfuß befindet, sollte meines Erachtens einen Kurs in
            der Volkshochschule belegen.

            Dann schreib dich schonmal ein. So ein Humbug!

            再见,
             CK

            --
            No Shoes On Mat!
            http://wwwtech.de/
        2. Hello,

          warum gibt dann

          $temp = null;

          hier wurde die Variable in die Tabelle aufgenommen und ihr NULL zugewiesen, also ein 'typloser' Bezeichner angelegt.

          echo "$temp: ".$temp."<br>";

          Hier wird $temp ersetzt gegen den Wert, da Du doppelte Anführungszeichen benutzt und das 'Parser-Steuerzeichen' $ einsetzt. Wenn Du willst, dass dort später Dollartemp: steht, dann musst Du das Steuerzeichen maskieren. Dann wird es als normales Literal benutzt.

          echo "$temp: $temp<br>";    ## oder

          echo '$temp: '.$temp.'<br>';

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Hallo,

            mir ist schon klar wie man Variablen ausgibt.
            Wollte nur zeigen, dass $temp _nichts_ enthält.

            Grüße, ...

            1. Hello,

              mir ist schon klar wie man Variablen ausgibt.
              Wollte nur zeigen, dass $temp _nichts_ enthält.

              Dann schreib das bitte auch so. MartinM möcht ja schließlioch auch zum Erfolg kommen und woher soll er wissen, was Du meinst, wenn Du nur die Hälfte hinschreibst?

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
      2. morgens,

        du könntest "null" benützen. Also:
        $arrStyleMP = null;
        Dann hat die Variable keinen Wert.

        Doch, natürlich hat sie einen, nämlich den soeben zugewiesenen String "null".

        Frage: Wie kommst du auf einen String, wenn da keine Anführungszeichen stehen?

        Zitat aus http://www.php.net/manual/de/language.types.null.php:
        "Der spezielle Wert NULL steht dafür, dass eine Varaiable keinen Wert hat."

        Soviel zu den Kriegsfüßen

        Grüße

        Heizer

        1. Noch etwas zur Ursprungsfrage:

          Sinnvoll ist "null" (svw. unset()) dann, wenn du sicher gehen möchtest, daß die Variable nicht gesetzt ist. Wenn du mit register_globals arbeiten solltest, ist es sehr empfehlenswert, alle Variablen, die irgendwann abgefragt werden, auf diese Art einzuführen.

          Solltest du aber Variablen vergrüßern wollen (mit ".=" bei Strings bzw. "[]" bei Arrays), dann solltest du die Variable als Leeren String ("") bzw. leeres Array (array()) initialisieren, sonst gibt PHP eine E_NOTICE Meldung aus.

          Schalte in der Entwicklung die Fehlermeldungen immer auf E_ALL (bzw. E_STRICT für PHP 5), dann schreibst du automatisch besseren Code und ersparst dir viel Fehlersuche.

          Grüße

          Heizer

  2. morgens,

    Ich weis (aus dem Informatikunterricht, lang lang ist's her), dass bei vielen Programmiersprachen Variablen erst definiert werden müssn

    Was hat dich eigentlich gehindert, http://www.php.net/manual/de/language.variables.php nachzulesen?

    Grüße aus Berlin

    Christoph S.