You can re-use or repeat an argument in PHP's sprintf
, for example, like so:
echo sprintf('I found %1$d %2$s! Hello %2$s!', 10, 'ducks'); // output: "I found 10 ducks! Hello ducks!"
From the example above, you may have deduced that the format for re-using an argument in PHP's sprintf
is as follows:
%[argnum$]specifier
Where argnum denotes the position of the argument you wish to re-use or repeat, and specifier denotes the type (from one of the following):
Specifier | Treated As | Presented As |
---|---|---|
d |
integer | Signed decimal number |
s |
string | String |
b |
integer | Binary number |
c |
integer | ASCII |
e |
scientific notation | Scientific notation with lowercase "e" (e.g. 1.2e+2) |
E |
scientific notation | Scientific notation with uppercase "E" (e.g. 1.2E+2) |
f |
float | Floating-point number (locale aware) |
F |
float | Floating-point number (non-locale aware) |
o |
integer | Octal |
u |
integer | Unsigned decimal number |
x |
integer | hexadecimal number (with lowercase letters) |
X |
integer | hexadecimal number (with uppercase letters) |
For example, %2$d
would mean, "use the second argument after the string we need to format, and display it as a decimal number".
Use single quotes for the string you need to format, otherwise PHP will treat the specifier after the $
as a string.
This post was published (and was last revised ) by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.