splinter: Variable mit Funktion hochzählen

Hallo

Ich möchte anhand einer Funktion eine Variable hochzählen lassen.

$count = 0;
function counter() {
 $count = $count+1;
 return $count;};

Das funktioniert ja nicht.

echo counter();
echo counter();
echo counter();

sollte DAS Ausgeben:

1
2
3

Wieso das mit PHP NICHT funktioniert weis ich, aber wie schreibe ich eine solche Funktion, so dass ich nur noch die Funktion aufrufen muss?

MfG

splinter

  1. Hallo

    Ich möchte anhand einer Funktion eine Variable hochzählen lassen.

    $count = 0;
    function counter() {
    $count = $count+1;
    return $count;};

    Das funktioniert ja nicht.

    echo counter();
    echo counter();
    echo counter();

    sollte DAS Ausgeben:

    1
    2
    3

    Wieso das mit PHP NICHT funktioniert weis ich, aber wie schreibe ich eine solche Funktion, so dass ich nur noch die Funktion aufrufen muss?

    MfG

    splinter

    Versuche es mit einer $_SESSION[zahl].
    In dieser Variablen steht(wenn Du es so setzt) anfangswert =0.
    Jedesmal wenn Du Deine Funktion aufrufst und hochzählst über gibst du $_SESSION[Zahl] und zahlst hoch.
    Danach musst Du den neuen(hochgezählten Wert) wieder in $_SESSION[zahl] schreiben, damit dieser immer aktuell ist.

    1. Versuche es mit einer $_SESSION[zahl].
      In dieser Variablen steht(wenn Du es so setzt) anfangswert =0.
      Jedesmal wenn Du Deine Funktion aufrufst und hochzählst über gibst du $_SESSION[Zahl] und zahlst hoch.
      Danach musst Du den neuen(hochgezählten Wert) wieder in $_SESSION[zahl] schreiben, damit dieser immer aktuell ist.

      Ich brauche keine Session. Der Wert wird nur für den Aufbau einer einzelnen Seite gebraucht und muss bei erneutem Aufrufen wieder bei Null starten. Die Seite ist mit .htaccess gesichert, ohne Cookies.

  2. Hallo

    Ich möchte anhand einer Funktion eine Variable hochzählen lassen.

    $count = 0;
    function counter() {
    $count = $count+1;
    return $count;};

    Wieso das mit PHP NICHT funktioniert weis ich, aber wie schreibe ich eine solche Funktion, so dass ich nur noch die Funktion aufrufen muss?

    Stichwort: Übergabe per Referenz.

    In diesem Fall:

      
    function counter(&count){  
      $count = $count++;  
    }  
      
    $count = 0;  
      
    counter($count);  
    
    

    Gruß

    Stareagle

    1. Hallo stareagle.

      function counter(&count){
        $count = $count++;
      }

      $count = 0;

      counter($count);

        
      Ein syntaktischer Fehler korrigiert und die Funktion vereinfacht:  
        
      ~~~php
      function counter(&$count) {  
        $count++;  
      }  
        
      $count = 0;  
        
      counter($count);
      

      Einen schönen Dienstag noch.

      Gruß, Mathias

      --
      ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
      debian/rules
      1. Hallo nochmal.

        function counter(&count){
          $count = $count++;
        }

        $count = 0;

        counter($count);

        
        >   
        > Ein syntaktischer Fehler korrigiert und die Funktion vereinfacht:  
        >   
        > ~~~php
        
        function counter(&$count) {  
        
        >   $count++;  
        > }  
        >   
        > $count = 0;  
        >   
        > counter($count);
        
        

        Bzw. gänzlich korrigiert, da der Suffix-Inkrementierungs-Operator zuallererst immer den derzeitigen Wert zurückgeben würde, womit $count immer wieder von 0 auf 0 gesetzt würde.

        Einen schönen Dienstag noch.

        Gruß, Mathias

        --
        ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
        debian/rules
        1. Hallo

          function counter(&$count) {

          $count++;
          }

          $count = 0;

          counter($count);

            
          Vielen Dank =)  
            
          Gibts jetz noch ne Möglichkeit counter() so zu programmieren dass nur noch "counter()" und nicht "counter($count)" aufgerufen werden muss?  
          Hab mal irgendwo so was gesehen, finde es aber nicht mehr.
          
  3. echo $begrüßung;

    Ich möchte anhand einer Funktion eine Variable hochzählen lassen.
    Wieso das mit PHP NICHT funktioniert weis ich, aber wie schreibe ich eine solche Funktion, so dass ich nur noch die Funktion aufrufen muss?

    Wenn eine Funktion auf globale Variablen zugreifen soll, muss der Name der Variable innerhalb der Funktion gekennzeichnet werden. Dies geschieht mit dem Schlüsselwort global. Alternativ kannst du auch auf das $GLOBALS-Array zugreifen. Siehe Variable scope.

    Generell halte ich es für keine gute Idee, innerhalb einer Funktion auf globale Variablen zuzugreifen. Auch scheint mir der Aufruf der Funktion aufwendiger als den Inkrementoperator ($foo++ oder ++$foo) zu verwenden.
    Wenn du einen generellen Zugriff auf die Variable unterbinden möchtest, und ihren aktuellen Wert ausschließlich über das Funktionsergebnis zur Verfügung stellen möchtest, dann bietet sich der Einsatz einer statischen Variable innerhalb der Funktion an.

    echo "$verabschiedung $name";

    1. Hallo

      Wenn du einen generellen Zugriff auf die Variable unterbinden möchtest, und ihren aktuellen Wert ausschließlich über das Funktionsergebnis zur Verfügung stellen möchtest, dann bietet sich der Einsatz einer statischen Variable innerhalb der Funktion an.

      Perfekt. =) Vielen Dank

    2. Hello,

      Wenn eine Funktion auf globale Variablen zugreifen soll, muss der Name der Variable innerhalb der Funktion gekennzeichnet werden. Dies geschieht mit dem Schlüsselwort global. Alternativ kannst du auch auf das $GLOBALS-Array zugreifen. Siehe Variable scope.

      Das ist aber schmuddelig, das auch schreibend zu tun.
      Dafür gibt es Referenzen

      http://www.php.net/manual/de/language.references.php

      Generell halte ich es für keine gute Idee, innerhalb einer Funktion auf globale Variablen zuzugreifen. Auch scheint mir der Aufruf der Funktion aufwendiger als den Inkrementoperator ($foo++ oder ++$foo) zu verwenden.

      Es kann ja den Grund haben, dass die Incrementierung von diversen Dingen abhängig ist.
      Da ist eine Funktion schon ganz praktisch.

      $count = 0;

      function inc_count(&$wert)
        {
          $wert++;
        }

      echo $count;
        inc_count($count);

      echo $count;
        inc_count($count);

      echo $count;
        inc_count($count);

      echo $count;

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

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau