Variable mit Funktion hochzählen
splinter
- php
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
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
3Wieso 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.
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.
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
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
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
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.
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";
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
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