VPRINTF ist eine sehr praktische Funktion in PHP für die Formatierung von Zeichenfolgen und die Ausgabe auf den Bildschirm. Es ist eine Variante der Printf -Funktion. Der Hauptunterschied besteht darin, dass VPRINTF ein Array als Argument akzeptiert, während Printf nacheinander mehrere separate Argumente akzeptiert. Obwohl VPRINTF es einfacher erleichtert, mehrere Parameter zu verarbeiten, gibt es einige Fallstricke, die bei der Verwendung leicht zu ignorieren sind. Durch das Beherrschen dieser Tipps können Sie häufige Fehler vermeiden.
Wie bei der Printf -Funktion stützt sich auch VPRINTF auf Formatierende, die in Zeichenfolgen definiert sind, um Variablen korrekt einzufügen. Daher müssen die Anzahl und die Art der in die übergebenen Parameter streng mit den Anforderungen des Platzhalters in der formatierten Zeichenfolge übereinstimmen. Andernfalls wirft das Programm einen Fehler oder gibt ein unerwartetes Ergebnis aus.
Zum Beispiel:
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-number">42</span></span><span>, </span><span><span class="hljs-string">"Hello, World!"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The number is %d and the string is %s"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
In diesem Beispiel wird %D durch die Ganzzahl 42 ersetzt und %S wird durch die Zeichenfolge "Hallo, Welt!" Ersetzt. . Wenn wir einen Parameter weniger übergeben oder die Parametertypen nicht übereinstimmen, macht das Programm einen Fehler.
Bei der Verwendung von VPRINTF muss jeder Platzhalter (z. B. %d , %s , %f usw.) mit dem Datentyp des entsprechenden Parameters übereinstimmen. Zum Beispiel erwartet %D einen Ganzzahltyp, während %F eine schwimmende Zahl erwartet. Ein falscher Datentyp führt zu einer falschen Ausgabe, oder in einigen Fällen stürzt das Programm ab.
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-number">3.14</span></span><span>, </span><span><span class="hljs-string">"PHP"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"Value is %d and message is %s"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>); </span><span><span class="hljs-comment">// Hier %d Sollte Ganzzahlen übereinstimmen,Aber was übergeben wird, ist ein schwebender Wert</span></span><span>
</span></span>
Dies kann zu Fehlern führen oder die Ausgabe ist nicht wie erwartet. Wenn Sie daher sicherstellen, dass jedes Formatsymbol mit seinem entsprechenden Parametertyp übereinstimmt, ist der Schlüssel für die Verwendung von Vprintf .
Ein Vorteil von Vprintf ist, dass es ein Array als Argument akzeptiert, aber die Reihenfolge hier muss mit der Reihenfolge der Platzhalter in der formatierten Zeichenfolge übereinstimmen. Andernfalls wird die Ausgabe verwirrt.
Zum Beispiel:
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-string">"Hello, World!"</span></span><span>, </span><span><span class="hljs-number">42</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The string is %s and the number is %d"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
Wenn Sie die Bestellung im Array tauschen:
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-number">42</span></span><span>, </span><span><span class="hljs-string">"Hello, World!"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The string is %s and the number is %d"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
Das Ausgabeergebnis wird:
<span><span>The </span><span><span class="hljs-built_in">string</span></span><span> </span><span><span class="hljs-keyword">is</span></span><span> </span><span><span class="hljs-number">42</span></span><span> </span><span><span class="hljs-keyword">and</span></span><span> the number </span><span><span class="hljs-keyword">is</span></span><span> Hello, World!
</span></span>
Diese falsche Reihenfolge kann Verwirrung in den Daten verursachen, sodass das an VPRINTF übergebene Array sichergestellt werden muss, dass sie in der richtigen Reihenfolge befinden.
In einigen Fällen, insbesondere wenn Zeichenfolgen Sonderzeichen enthalten, können Probleme bei der Verwendung von VPRINTF für die Ausgabe auftreten. Wenn Ihre Zeichenfolge % oder andere spezielle Symbole enthält, kann sie falsch in formatierte Symbole analysiert werden. Um dies zu vermeiden, kann es gelöst werden, indem die Zeichen entkommen.
Zum Beispiel:
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-string">"%d is the value"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The number is %s"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
Hier wird der %d als Platzhalter missverstanden, sodass Sie ein doppeltes prozentiges Zeichen %% verwenden sollten, um zu entkommen:
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-string">"%%d is the value"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The number is %s"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
Auf diese Weise wird %% eher als separates % -Scharakter als als Platzhalter ausgegeben.
Wenn Sie schwimmende Werte ausgeben müssen, können Sie Formatsymbole verwenden, um die Genauigkeit zu steuern. %f gibt standardmäßig 6 Dezimalstellen aus, aber Sie können die Anzahl der ausgiebigen Dezimalstellen angeben. Auf diese Weise können Sie die Anzeige von Zahlen flexibler steuern.
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-number">3.1415926535</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The value of pi is %.2f"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
Dies wird ausgeben:
<span><span>The </span><span><span class="hljs-keyword">value</span></span><span> of pi </span><span><span class="hljs-keyword">is</span></span><span> </span><span><span class="hljs-number">3.14</span></span><span>
</span></span>
Hier bedeutet %.2f zwei Dezimalstellen. Wenn keine Dezimalstellen angegeben sind, gibt PHP standardmäßig sechs Dezimalstellen aus.
Obwohl VPRINTF die String -Formatierung flexibler macht, können häufige Aufrufe bei VPRINTF eine Leistungswirkung haben, wenn sehr lange Zeichenfolgen formatiert werden müssen, insbesondere wenn es um große Datenmengen geht. Wenn Sie häufig formatierte Zeichenfolgen ausgeben müssen, können Sie den formatierten Prozess außerhalb der Funktion einstellen, um unnötige Anrufe zu reduzieren.
Bei Verwendung von VPRINTF ist das Wichtigste, dass die formatierten Symbole mit dem Datentyp übereinstimmen, die Auftragsprobleme in der Array -Übertragung vermeiden und Sonderzeichen vernünftigerweise und die Präzisionsregelung behandeln. Durch das Beherrschen dieser Techniken können Sie häufige Fehler vermeiden und den Code effizienter und lesbar machen.