vsprintf / vprintf în PHP

Construiește (vsprintf) sau afișează (vprintf) un text formatat după un șablon, cu valorile luate dintr-un tablou.

Sintaxă
vsprintf(string $format, array $values): string

Ce face vsprintf / vprintf

vsprintf funcționează ca sprintf, dar primește valorile într-un singur tablou, nu ca parametri separați. Este utilă când valorile vin deja grupate, de exemplu dintr-un rând din baza de date sau dintr-un explode.

vprintf primește aceiași parametri, dar afișează direct textul, ca printf, și returnează lungimea textului afișat.

Parametri

Parametru Descriere
$format Șablonul, cu marcaje precum %s, %d, %.2f.
$values Tabloul cu valori. Se iau în ordine, cheile nu contează.

Ce returnează

vsprintf: textul formatat. vprintf: numărul de caractere (octeți) afișate.

Exemple

Exemplul 1: Dată din bucăți

%3$02d înseamnă „a treia valoare din tablou, ca număr cu 2 cifre”. Așa poți folosi valorile în altă ordine decât cea din tablou.

<?php
$parti = explode("-", "2026-10-9");

echo vsprintf("%3\$02d.%2\$02d.%1\$d", $parti);

Rezultat

09.10.2026

Exemplul 2: Un rând de tabel, afișat direct cu vprintf

<?php
$comenzi = [
    ["Ana", 3, 149.5],
    ["Mihai", 12, 1299],
];

foreach ($comenzi as $rand) {
    vprintf("%-8s %3d buc. %10.2f lei\n", $rand);
}

Rezultat

Ana        3 buc.     149.50 lei
Mihai     12 buc.    1299.00 lei

Greșeli frecvente

  • Tabloul are mai puține elemente decât marcajele din șablon. În PHP 8 primești ValueError.

Comenzi înrudite

  • sprintf: Construiește un text formatat după un șablon și îl returnează, fără să îl afișeze.
  • printf: Afișează un text formatat după un șablon, de exemplu numere cu un anumit număr de zecimale.
  • fprintf / vfprintf: Scrie un text formatat după un șablon direct într-un fișier sau flux deschis.
  • number_format: Formatează un număr cu zecimale și separator de mii, de exemplu 1.299,50.