In PHP sind Sprintf () und vSPrintf () Funktionen, die zum Format von Zeichenfolgen verwendet werden. Sie sind in vielen Anwendungsszenarien sehr praktisch, wie z. B. Text mit Variablen zu generieren, SQL -Abfragen zu erstellen, URLs zu generieren usw. Obwohl sie ähnlich aussehen, gibt es einen signifikanten Unterschied in der Übergabe der Parameter.
Sprintf () ist eine sehr häufig verwendete String -Formatierungsfunktion in PHP. Es funktioniert ähnlich wie bei sprintf () in C. Der erste Parameter der Funktion ist die Formatzeichenfolge, gefolgt von einer variablen Anzahl von Parametern, um die Platzhalter in der Formatzeichenfolge zu ersetzen.
$name = "Alice";
$age = 25;
$output = sprintf("My name is %s and I am %d years old.", $name, $age);
echo $output;
// Ausgabe:My name is Alice and I am 25 years old.
Ähnlich wie mit Sprintf () wird VSPRINTF () auch zum Format von Zeichenfolgen verwendet, aber seine Parameterformen sind etwas unterschiedlich. Es empfängt zwei Parameter: Die erste ist die Formatzeichenfolge und das zweite ist ein Array, das alle Werte enthält, die in der formatierten Zeichenfolge ausgefüllt werden sollen.
Dies ist nützlich, wenn Sie sich über die Anzahl der Parameter nicht sicher sind oder wenn die Parameter dynamisch erzeugt sind.
$args = ["Bob", 30];
$output = vsprintf("My name is %s and I am %d years old.", $args);
echo $output;
// Ausgabe:My name is Bob and I am 30 years old.
Funktionsname | Parametertyp | Szenarien verwenden |
---|---|---|
Sprintf | Mehrere individuelle Parameter | Die Anzahl der Parameter ist bekannt, und die direkte Übertragung von Werten ist intuitiverer |
vSprintf | Parameter werden durch Arrays weitergeleitet | Flexibler, wenn Parameter aus Arrays stammen oder wenn die Anzahl der Parameter nicht festgelegt ist |
Schauen wir uns ein Szenario an, das näher an den tatsächlichen Anwendungen liegt. Angenommen, wir möchten dynamisch eine URL generieren, die basierend auf dem eingehenden Datenformat generiert werden kann:
// verwenden sprintf
$userId = 123;
$token = "abc456";
$url = sprintf("https://gitbox.net/user/%d/token/%s", $userId, $token);
echo $url;
// Ausgabe:https://gitbox.net/user/123/token/abc456
// verwenden vsprintf
$params = [123, "abc456"];
$url = vsprintf("https://gitbox.net/user/%d/token/%s", $params);
echo $url;
// Ausgabe:https://gitbox.net/user/123/token/abc456
Wenn Sie die Anzahl und Reihenfolge der Parameter kennen, die an die formatierte Zeichenfolge übergeben werden sollen, ist es einfacher und unkompliziert, Sprintf () zu verwenden.
Wenn Ihre Parameter aus einem Array entnommen werden oder die Anzahl der Parameter dynamisch ist, ist VSPRINTF () eine geeignetere Wahl.
Weder gibt das Ergebnis direkt aus, gibt jedoch die formatierte Zeichenfolge zurück, wodurch sie beim Erstellen komplexer Text sehr flexibel sind.
Wenn Sie die Verwendung dieser beiden Funktionen beherrschen, können Sie bequeme Verarbeitungsketten und Ihren Code ordentlicher und wartbarer machen.