Spirs: Variable Variabeln außerhalb einer for-Schleife

Hi.

ich generiere 10 variable Variabeln in zwei for-Schleifen wie folgt:

  
        for($j=1;$j<=5;$j++)  
        {  
         if($arrfeed[rate]==$j)  
         {  
          $bewert_{$j}++;  
         }  
        }  

[..]

  
      $anzahl_bew=mysql_result($res,0,"rate_num");  
      $anzahl_bew=intval($anzahl_bew);  
      for($j=1;$j<=5;$j++)  
      {  
       $proz_bew_{$j}=$bewert_{$j}/$anzahl_bew;  
       $proz_bew_{$j}=$proz_bew_{$j}*100;  
      }  

Ich kann keine der Variabeln außerhalb der for-Schleifen aufrufen. Um dies zu testen habe ich natürlich nicht "$proz_bew_{$j}" geschrieben, sondern bspw "$proz_bew_5".
Wenn ich allerdings innerhalb der for-Schleife die Variable ausgeben will, wird diese auch ausgegeben.
Man beachte: die Variable $bewert_{$j} ist auch in der zweiten for-Schleife gültig, aber niemals außerhalb.

Ist das eine Angewohnheit von PHP, variable Variabeln nur in der Schleife in der sie generiert wurden gültig sind?

Viele Grüße
Spirs

  1. Hi Spirs!

    Ist das eine Angewohnheit von PHP, variable Variabeln nur in der Schleife in der sie generiert wurden gültig sind?

    AFIAK ist das ein Prinzip, dass fast allen Programmiersprachen zugrundeliegt.

    http://de2.php.net/manual/en/language.variables.scope.php

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. echo $begrüßung;

      Ist das eine Angewohnheit von PHP, variable Variabeln nur in der Schleife in der sie generiert wurden gültig sind?

      AFIAK ist das ein Prinzip, dass fast allen Programmiersprachen zugrundeliegt.

      Nein, der Scope beschränkt sich, zumindest unter PHP, nicht nur auf den aktuellen {}-Block sondern auf die gesamte Funktion. Im globalen Adressbereich (außerhalb von Funktionen) deklarierte Variablen gelten auch nur dort.

      Vermutlich ist es ein Denkfehler und die entstandenen Variablennamen entsprechen gar nicht der Vermutung des OP. Eine Kontrollausgabe mittels print_r($GLOBALS) oder var_dump($GLOBALS) sollte aufklären, was wirklich passiert ist. (Vorher ein <pre> erhöht die Übersichtlichkeit.)

      Ansonsten gibt es kaum ein Problem, das sich nicht mit einem Array statt variablen Variablen einfacher lösen ließe.

      echo "$verabschiedung $name";

  2. Moin!

    ich generiere 10 variable Variabeln in zwei for-Schleifen wie folgt:

    Du benötigst keine variablen Variablen, sondern ein Array.

    Los, nutze es!

    Außerdem: Hast du eine Konstante namens "rate" definiert?

    for($j=1;$j<=5;$j++)
            {
             if($arrfeed[rate]==$j)
             {
              $bewert_{$j}++;
             }
            }

      
     - Sven Rautenberg
    
    -- 
    "Love your nation - respect the others."