What is the purpose of the printf() function in PHP?

php, printf

Solution

printf() is a port of C's printf() function, so people who got a background writing C code are more familiar with the syntax and will prefer it. However, most people who start with PHP find it rather confusing.

For comparison:

$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
        mysql_real_escape_string($user),
        mysql_real_escape_string($password));

(I used sprintf(), which is the same as printf but it won't actually print the string, it just returns it)

$query = "SELECT * FROM users WHERE user='" . mysql_real_escape_string($user) . "' AND password='" . mysql_real_escape_string($password) . "'";

It's just a matter of preference!

Problem

This may seem like a really daft question, but what is the reason for the existence of the `printf()` function in PHP? It seems to me that that using `echo` will achieve the exact same results, with the added bonus that you don't get confused if you have several variables being output on one line (true, you can use `%1$s` as opposed to just `%s`, but it can still get messey with a few variables all being declared). I know you can also define the type of the variable, without the need to amend it before outputting the string, but to me that doesn't seem like enough to warrent creating a function. Maybe I'm wrong, maybe I'm missing something obvious, but if someone can help me to understand why it exists (so that I know whether or not I should really be using it!) I'd appriciate it. Thanks.

Original source