Bird
Raised Fist0
PHPprogramming~5 mins

Printf and sprintf formatting in PHP

Choose your learning style10 modes available
Introduction

Printf and sprintf help you create text with numbers or words in a neat, controlled way.

You want to show a number with exactly two decimal places, like a price.
You need to insert variables into a sentence cleanly, like a name or age.
You want to format a date or time in a specific style.
You want to align text or numbers in columns for a report.
You want to build a string with variables but keep the format consistent.
Syntax
PHP
printf(format, arg1, arg2, ...);
sprintf(format, arg1, arg2, ...);

printf prints the formatted string directly.

sprintf returns the formatted string without printing it.

Examples
Prints a greeting with a name inserted.
PHP
printf("Hello %s!", "Alice");
Prints a price with two decimal places.
PHP
$price = 12.5;
printf("Price: $%.2f", $price);
Creates a string with a number padded with zeros to 4 digits.
PHP
$text = sprintf("Number: %04d", 7);
Sample Program

This program shows how to use printf to print formatted text and sprintf to create a formatted string.

PHP
<?php
$name = "Bob";
$age = 30;
$score = 95.6789;

// Print a greeting
printf("Hello %s!\n", $name);

// Print age with label
printf("Age: %d years\n", $age);

// Print score with 2 decimals
printf("Score: %.2f\n", $score);

// Create a formatted string with sprintf
$info = sprintf("Name: %s, Age: %d, Score: %.1f", $name, $age, $score);
echo $info . "\n";
?>
OutputSuccess
Important Notes

Use %s for strings, %d for integers, and %f for floating-point numbers.

You can control decimal places with %.2f (2 decimals) or %.1f (1 decimal).

Remember printf prints immediately, sprintf returns the string for later use.

Summary

Printf and sprintf format text by inserting variables in a controlled way.

Printf prints the result; sprintf returns it as a string.

Use format codes like %s, %d, and %f to specify how variables appear.

Practice

(1/5)
1. What does the %s format specifier do in printf or sprintf in PHP?
easy
A. It formats the variable as a string.
B. It formats the variable as an integer.
C. It formats the variable as a floating-point number.
D. It formats the variable as a boolean.

Solution

  1. Step 1: Understand format specifiers

    The %s specifier is used to insert a string value into the formatted output.
  2. Step 2: Match specifier to variable type

    Since %s is for strings, it converts the variable to a string representation.
  3. Final Answer:

    It formats the variable as a string. -> Option A
  4. Quick Check:

    %s = string [OK]
Hint: Remember %s means string, %d integer, %f float [OK]
Common Mistakes:
  • Confusing %s with %d or %f
  • Using %s for numbers without converting
  • Thinking %s formats booleans
2. Which of the following is the correct syntax to print a floating-point number with 2 decimal places using printf in PHP?
easy
A. printf("%.2f", $number);
B. printf("%2f.", $number);
C. printf("%f.2", $number);
D. printf("%f2.", $number);

Solution

  1. Step 1: Identify correct decimal precision syntax

    In PHP, to format a float with 2 decimals, use %.2f where .2 specifies 2 decimal places.
  2. Step 2: Check each option's format string

    Only printf("%.2f", $number); uses %.2f correctly; others have misplaced or incorrect syntax.
  3. Final Answer:

    printf("%.2f", $number); -> Option A
  4. Quick Check:

    %.2f = float with 2 decimals [OK]
Hint: Use %.Nf to print float with N decimals [OK]
Common Mistakes:
  • Placing decimal after %f instead of before
  • Using %2f instead of %.2f
  • Adding extra characters inside format string
3. What will be the output of the following PHP code?
$name = "Alice";
$score = 95.678;
printf("Student: %s, Score: %.1f", $name, $score);
medium
A. Student: Alice, Score: 95.6
B. Student: Alice, Score: 95.7
C. Student: Alice, Score: 95.68
D. Student: Alice, Score: 95.678

Solution

  1. Step 1: Analyze format specifiers

    %s inserts the string $name as is. %.1f formats $score as a float with 1 decimal place, rounding the value.
  2. Step 2: Calculate rounded float

    95.678 rounded to 1 decimal place is 95.7.
  3. Final Answer:

    Student: Alice, Score: 95.7 -> Option B
  4. Quick Check:

    %.1f rounds 95.678 to 95.7 [OK]
Hint: %.1f rounds float to 1 decimal place [OK]
Common Mistakes:
  • Not rounding float correctly
  • Confusing %s and %f usage
  • Expecting full float without formatting
4. Identify the error in this PHP code snippet:
$value = 123;
printf("Value is %d.2", $value);
medium
A. The variable $value is not defined.
B. printf cannot print integers.
C. The format specifier %d.2 is invalid syntax.
D. The code is correct and prints 'Value is 123.2'.

Solution

  1. Step 1: Check format specifier syntax

    %d is for integers and does not support precision like .2. The correct usage is just %d.
  2. Step 2: Understand error cause

    Adding .2 after %d causes invalid format syntax, leading to an error or unexpected output.
  3. Final Answer:

    The format specifier %d.2 is invalid syntax. -> Option C
  4. Quick Check:

    %d does not take precision like %.2f [OK]
Hint: Use %d alone for integers; no decimal precision [OK]
Common Mistakes:
  • Trying to add decimal precision to %d
  • Confusing %d and %f format specifiers
  • Assuming printf auto-corrects invalid formats
5. You want to create a formatted string showing a product's name left-aligned in 10 spaces and its price right-aligned in 8 spaces with 2 decimals. Which sprintf format string is correct?
$product = "Pen";
$price = 1.5;
$result = sprintf("...", $product, $price);
hard
A. "%-8s%-10.2f"
B. "%10s%-8.2f"
C. "%10s%8.2f"
D. "%-10s%8.2f"

Solution

  1. Step 1: Understand alignment and width specifiers

    %-10s means left-align string in 10 spaces. %8.2f means right-align float in 8 spaces with 2 decimals.
  2. Step 2: Match requirements to options

    "%-10s%8.2f" matches left-aligned product name in 10 spaces and right-aligned price with 2 decimals in 8 spaces.
  3. Final Answer:

    "%-10s%8.2f" -> Option D
  4. Quick Check:

    %-10s left-align string, %8.2f right-align float [OK]
Hint: Use - for left-align, number for width, .N for decimals [OK]
Common Mistakes:
  • Mixing alignment flags (-) with wrong specifier
  • Swapping width numbers for string and float
  • Forgetting .2 for decimal precision on float
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard