Wenn ich diese Funktion in einer anderen Datei aufruft, gibt die Funktion keinen eindeutigen Wert (einen inkrementierten Wert) zurück. Auch wenn ich diese Funktion in der gleichen Datei (wo die Funktion gemacht wird) echo, funktioniert es gut. Ich kenne das Konzept des Umfangs der statischen Variablen, wie ich bereits versucht habe, indem ich $ i durch $ _SESSION ['i'] aber kein erwartetes Ergebnis ersetze. Vielen Dank im Voraus.statische Variable wird nicht beim Aufruf der Funktion inkrementiert
Antwort
Beachten Sie, dass der Wert $i
nicht beibehalten wird. Wenn Sie also eine neue Anforderung an den Server senden, wird das Skript erneut geladen, und $i
wird auf 0
zurückgesetzt.
Um die Variable in der Benutzersitzung zu behalten, verwenden Sie $SESSION['i']
, aber wie Sie bereits versucht haben, wird dies pro Sitzung eindeutig sein, nicht global.
Um global eindeutige Nummer, die Sie auf der Festplatte speichern, müssen haben, fopen
/flock
/fread
/fwrite
/fclose
Funktionen.
, wenn die Funktion existiert dann den Wert der statischen Variablen verloren
if(isset($_SESSION['i']))
$_SESSION['i']++;
else
$_SESSION['i']=0;
Nein .. gleiche Ausgabe 00001. –
das ist das richtige Format und ersetze statische Variable Abschnitt verwendet diese Session-Variable –
Ja Ich habe es versucht, aber es gibt immer noch die gleiche Ausgabe. 00001 –
Für eine einzelne Anfrage sollte es funktionieren -
function genTokenNo()
{
static $i=0;
$i=$i+1;
return str_pad($i, 5, '0', STR_PAD_LEFT);
}
echo genTokenNo() . ' - ' . genTokenNo() . ' - ' . genTokenNo();
Ausgabe
00001 - 00002 - 00003
Aber wenn Sie mehrere Male anfordern, wird der Wert bei jeder Anfrage zurückgesetzt und jedes Mal, wenn die Antwort die gleiche sein wird. Ich würde vorschlagen, den Wert in der Datenbank oder in irgendeiner Datei zu speichern. In diesem Fall wäre die Verwendung von seesion
nicht zuverlässig.
$ sql = "INSERT INTO SET TokenNo = '". GenTokenNo(). "'; Das ist die Verwendung von Funktion in secondfile.php. Ich versuche, die Ausgabe in der Datenbank zu speichern. –
Also ich denke, sie sind in verschiedenen Anfragen. –
Ihre Struktur wird wie folgt aussehen:
file1.php
function genTokenNo()
{
static $i=0;
$i=$i+1;
return str_pad($i, 5, '0', STR_PAD_LEFT);
}
file2.php
include('file1.php');
//^^^^^^^^^^^^^^^^^^^ Include file before call that function.
echo genTokenNo(); //00001
echo "<br />";
echo genTokenNo(); //00002
echo "<br />";
echo genTokenNo(); //00003
echo "<br />";
echo genTokenNo(); //00004
Sir ich habe bereits die Datei in der anderen Datei enthalten. –
@sadiamallick Können Sie bitte Sie Code wie ich gepostet in meiner Antwort, ich meine beide Dateien Code zu sagen .. –
Sir ich habe geschrieben –
file1.php
file2.php
<?php
include('file1.php');
$sql = "INSERT INTO table SET TokenNo='".genTokenNo()."' ";
mysql_query($sql);
?>
- 1. Die statische Variable in der abgeleiteten Klasse wurde nicht inkrementiert
- 2. Erhöhungsschritte nicht-statische Variable über statische Funktion
- 3. nicht statische vs. statische Funktion und Variable
- 4. Xcode UIProgressBar wird nicht inkrementiert
- 5. Warum wird der Zeiger nicht inkrementiert
- 6. Variable wird in C# nicht inkrementiert Release x64
- 7. Wann wird Int ++ inkrementiert?
- 8. Warum wird der Zähler inkrementiert?
- 9. statische Variable innerhalb Template-Funktion
- 10. Statische Variable wird zweimal initialisiert
- 11. Welchen Wert hat die statische Variable innerhalb einer Funktion?
- 12. Statische Variable in Funktion gesetzt durch den Aufruf einer anderen Funktion
- 13. Syntaxfehler beim Aufruf der plpgsql-Funktion
- 14. statische Variable innerhalb der Funktion vs statische Klasse Variable in C++
- 15. Initialisierung der statischen Variable durch Aufruf der Funktion
- 16. Aufruf statische Funktion Vorlage innerhalb abhängig Umfangs
- 17. Foundation pop-up schließt sich nicht beim Aufruf der Funktion
- 18. InvalidPrintCommand Fehler beim Aufruf der SalReportPrint() Funktion
- 19. Statische Variable kann nicht innerhalb der statischen Klassenfunktion
- 20. Statische Variable vs. Member
- 21. Wie wird die Variable, die in der Variablen gespeichert ist, mit Javascript inkrementiert?
- 22. Warum kann ich eine statische Variable nicht initialisieren, indem ich eine statische Funktion in Swift aufruft?
- 23. Nullpointer beim Aufruf statische Methode der statischen Unterklasse
- 24. Statische lokale Variable einer Vorlage `inline` Funktion
- 25. Hibernate wird programmatisch inkrementiert ID
- 26. mapStateToProps wird nicht beim ersten Aufruf der Komponente aufgerufen
- 27. Nullpointer oder wird die statische Variable Inhalt
- 28. Objektvariable kann nicht inkrementiert werden?
- 29. Identität inkrementiert nur wenn Datensatz eingefügt wird
- 30. Vector Iterator nicht inkrementiert
Jedes Mal, wenn genTokenNo() aufrufen, setzen Sie i 0 bis $. – mazedlx
Nein, ich bekomme 00001 –
Wenn ich Ihren Code versuchte, wird es jedes Mal +1 zurückgeben, wenn ich Funktion wie 'echo genTokenNo(); // 00001 echo "
"; echo genTokenNo(); // 00002 echo "
"; echo genTokenNo(); // 00003 echo "
"; echo genTokenNo(); // 00004' –