Simon: [] nach variable

Hi,
ist wahrscheinlich eine dumme Frage, hab nur nicht gewusst unter welchem Begriff ich suchen soll.

also was bedeutet [] nach einer Variable:

z.B.
$error_msg[]="blablabla";

MfG
Simon

  1. Guten Tag,

    $error_msg[]="blablabla";

    Definiert, dass $error_msg ein Array ist und weißt dem nächsten freien Schlüssel "blablabla" zu. Ist dies der erste Wert im Array, wird er den numerischen Wert (int) 0 als Schlüssel erhalten.

    Gruß
    Christoph Jeschke

    --
    Zend Certified Engineer
    Certified Urchin Admin
    1. Definiert, dass $error_msg ein Array ist und weißt dem nächsten freien Schlüssel "blablabla" zu. Ist dies der erste Wert im Array, wird er den numerischen Wert (int) 0 als Schlüssel erhalten.

      ok danke.
      Hätte da noch eine Frage:

      Ich prüfe mit dem:

      if (!$valid){  
      $error_msg[]="blablabla.";  
      }
      

      Ob z.B die Email-Adresse richtig ist.

      und dann zeige ich die Fehlermeldungen an:

      if ($error_msg) {  
          echo "<h4>Fehler!</h4>";  
         echo "<ul>\n";  
          foreach ($error_msg as $err) {  
          echo "<li>".$err."</li>\n";  
          }  
         echo "</ul>";  
        } 
      ~~~.  
        
      Bis dahin funktioniert alles. Aber wenn ich jetzt die Prüfung anders mach und sage:  
      ~~~php
      if (!$valid){  
      $error_msg_email="blablabla.";  
      }
      

      und dann die Variable $error_msg_email anzeigen will mit dem:

      echo $error_msg_email;

      wird nichts angezeigt.

      MfG
      Simon

      1. Hi,

        Aber wenn ich jetzt die Prüfung anders mach und sage:

        if (!$valid){

        $error_msg_email="blablabla.";
        }

        
        > und dann die Variable $error\_msg\_email anzeigen will mit dem:  
        > `echo $error_msg_email;`{:.language-php}  
        > wird nichts angezeigt.  
          
        Dann stellst du jetzt erst mal das eror\_reporting auf E\_ALL (und display\_errors auf on), wenn nicht schon geschehen - und wenn du dann von PHP noch keine Hinweise bekommen solltest, dann machst du mal ein paar Kontrollausgaben, um deine Erwartung an den Scriptverlauf mit der Realitaet abzugleichen.  
          
        MfG ChrisB  
          
        
        -- 
        „This is the author's opinion, not necessarily that of Starbucks.“
        
      2. echo $begrüßung;

        Ich prüfe mit dem:
        if (!$valid){
        $error_msg[]="blablabla.";
        Ob z.B die Email-Adresse richtig ist.

        Du solltest vorher definitiv dafür sorgen, dass $error_msg vorhanden ist und grundinitialisiert ist. Mit

        $error_msg = array();

        ist $error_msg auf alle Fälle ein leeres Array. Auch dann, wenn register_globals angeschaltet ist oder anderswo die Variable vorbelegt wurde. Auch wenn der bedingte Zweig nicht abgearbeitet wird, hast du damit ein Array und kannst foreach ungestraft darauf anwenden.

        if ($error_msg) {

        PHP ist nicht Javascript. Das Vorhandensein einer Variable testet man mit isset() (oder empty(), wenn man eine Prüfung auf "leer" oder nicht vorhanden braucht).

        echo "$verabschiedung $name";

    2. Definiert, dass $error_msg ein Array ist und weißt dem nächsten freien Schlüssel "blablabla" zu. Ist dies der erste Wert im Array, wird er den numerischen Wert (int) 0 als Schlüssel erhalten.

      genauergesagt ist es eine kurzschreibweise für array_push

      1. echo $begrüßung;

        genauergesagt ist es eine kurzschreibweise für array_push

        Nein, das ist es nicht. array_push() ist eine Funktion, mit der ein oder mehrere Werte an ein Array angefügt werden können. $foo[] ist eher eine spezielle Form des Array-Zugriffs. Außerdem ist der Aufruf einer Funktion aufwendiger als das Array mit [] oder ['expliziter_key'] zu erweitern

        echo "$verabschiedung $name";

      2. Guten Tag,

        genauergesagt ist es eine kurzschreibweise für array_push

        Davon abgesehen, was dedifix bereits korrekt anmerkte (Sprachkonstrukt statt Funktion) ist sie auch nicht äquivalent zu array_push(), da beim Sprachkonstrukt auch direkt eine Position angegeben werden kann, an welche Stelle der Wert ins Array eingefügt werden soll.

        Gruß
        Christoph Jeschke

        --
        Zend Certified Engineer
        Certified Urchin Admin
        1. echo $begrüßung;

          [...] da beim Sprachkonstrukt auch direkt eine Position angegeben werden kann, an welche Stelle der Wert ins Array eingefügt werden soll.

          Es ist nur ein Key, keine Positionsangabe. Folgendes Beispiel

          $a = array();  
          $a[1] = 42;  
          $a[0] = 23;  
            
          foreach ($a as $key => $value)  
            echo "Key: $key - Value: $value\n";
          

          gibt nicht etwa 23, 42 aus sondern behält die Reihenfolge bei, so wie die Werte hinzugefügt wurden.

          echo "$verabschiedung $name";