Bird
Raised Fist0
PHPprogramming~20 mins

Heredoc and nowdoc syntax in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Heredoc and Nowdoc Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of a heredoc string with variable interpolation
What is the output of this PHP code?
PHP
<?php
$name = "Alice";
$text = <<<EOD
Hello, $name!
Welcome to PHP.
EOD;
echo $text;
AHello, Alice! Welcome to PHP.
B
Hello, $name!
Welcome to PHP.
C
Hello, Alice!
Welcome to PHP.
DSyntax error
Attempts:
2 left
💡 Hint
Heredoc strings allow variable interpolation like double quotes.
❓ Predict Output
intermediate
2:00remaining
Output of a nowdoc string with variable inside
What will this PHP code output?
PHP
<?php
$name = "Bob";
$text = <<<'EOD'
Hello, $name!
Welcome to PHP.
EOD;
echo $text;
A
Hello, $name!
Welcome to PHP.
B
Hello, Bob!
Welcome to PHP.
CSyntax error
DHello, $name! Welcome to PHP.
Attempts:
2 left
💡 Hint
Nowdoc strings do not replace variables inside.
❓ Predict Output
advanced
2:00remaining
Behavior of heredoc with complex variable syntax
What is the output of this PHP code?
PHP
<?php
$arr = ['fruit' => 'apple'];
$text = <<<EOD
I like {$arr['fruit']}.
EOD;
echo $text;
AI like .
BI like {$arr['fruit']}.
CSyntax error
DI like apple.
Attempts:
2 left
💡 Hint
Heredoc supports complex variable parsing with braces.
❓ Predict Output
advanced
2:00remaining
Error caused by incorrect heredoc closing identifier
What error does this PHP code produce?
PHP
<?php
$text = <<<EOD
Hello World
Eod;
echo $text;
AOutputs: Hello World
BParse error: syntax error, unexpected identifier 'Eod'
CNotice: Undefined variable Eod
DFatal error: Uncaught Error
Attempts:
2 left
💡 Hint
Heredoc closing identifier must match exactly, including case.
🧠 Conceptual
expert
2:00remaining
Difference between heredoc and nowdoc in PHP
Which statement correctly describes the difference between heredoc and nowdoc syntax in PHP?
AHeredoc parses variables and escape sequences; nowdoc treats content as plain text without parsing.
BNowdoc parses variables and escape sequences; heredoc treats content as plain text without parsing.
CBoth heredoc and nowdoc parse variables but differ in escape sequence handling.
DNeither heredoc nor nowdoc parse variables or escape sequences.
Attempts:
2 left
💡 Hint
Think about which syntax acts like double quotes and which acts like single quotes.

Practice

(1/5)
1. What is the main difference between heredoc and nowdoc syntax in PHP?
easy
A. Nowdoc parses variables inside the string, heredoc does not.
B. Neither heredoc nor nowdoc parse variables inside the string.
C. Both parse variables inside the string the same way.
D. Heredoc parses variables inside the string, nowdoc does not.

Solution

  1. Step 1: Understand heredoc behavior

    Heredoc syntax allows variables inside the string to be replaced with their values.
  2. Step 2: Understand nowdoc behavior

    Nowdoc syntax treats the string as plain text, so variables are not replaced.
  3. Final Answer:

    Heredoc parses variables inside the string, nowdoc does not. -> Option D
  4. Quick Check:

    Heredoc = variable parsing, Nowdoc = no parsing [OK]
Hint: Remember: heredoc = variables parsed, nowdoc = raw text [OK]
Common Mistakes:
  • Thinking nowdoc parses variables like heredoc
  • Confusing which syntax uses single quotes
  • Assuming both behave the same with variables
2. Which of the following is the correct syntax to start a nowdoc string in PHP?
easy
A. <<<'EOD'
B. <<
C. <<<"EOD"
D. <<

Solution

  1. Step 1: Identify nowdoc syntax start

    Nowdoc starts with <<< followed by a single-quoted identifier, like <<<'EOD'.
  2. Step 2: Compare options

    <<<'EOD' uses single quotes correctly; others use no quotes or double quotes which are for heredoc or invalid.
  3. Final Answer:

    <<<'EOD' -> Option A
  4. Quick Check:

    Nowdoc uses single quotes around identifier [OK]
Hint: Nowdoc always uses single quotes around the identifier [OK]
Common Mistakes:
  • Using double quotes or no quotes for nowdoc start
  • Adding semicolon after the identifier
  • Confusing heredoc and nowdoc start syntax
3. What will be the output of the following PHP code?
$name = "Alice";
$text = <<
medium
A. Hello, $name!
B. Hello, Alice!
C. Syntax error
D. Hello, ;

Solution

  1. Step 1: Understand heredoc variable parsing

    The heredoc syntax replaces variables like $name with their values inside the string.
  2. Step 2: Apply variable value

    $name is "Alice", so the output becomes "Hello, Alice!".
  3. Final Answer:

    Hello, Alice! -> Option B
  4. Quick Check:

    Heredoc parses variables = Hello, Alice! [OK]
Hint: Heredoc replaces variables with their values automatically [OK]
Common Mistakes:
  • Thinking heredoc outputs variable names literally
  • Confusing heredoc with nowdoc behavior
  • Expecting syntax error due to variable inside heredoc
4. Identify the error in this PHP code snippet using nowdoc:
$text = <<<'EOD'\
This is a nowdoc string.
EOD;
echo $text;
medium
A. Missing semicolon after nowdoc start identifier
B. Incorrect closing identifier syntax
C. Extra backslash after nowdoc start identifier
D. Syntax error due to single quotes around identifier

Solution

  1. Step 1: Check nowdoc start syntax

    Nowdoc start must be followed immediately by a newline, no extra characters like backslash after the identifier.
  2. Step 2: Identify error in code

    The code has a backslash after <<<'EOD' which is invalid syntax; it should be just <<<'EOD' followed by newline.
  3. Final Answer:

    Extra backslash after nowdoc start identifier -> Option C
  4. Quick Check:

    Nowdoc start line ends immediately after identifier, no extra chars [OK]
Hint: Nowdoc start line ends immediately after identifier, no extra chars [OK]
Common Mistakes:
  • Adding backslash or semicolon after nowdoc start
  • Using double quotes instead of single quotes
  • Misplacing closing identifier
5. You want to store a multi-line SQL query in a PHP variable without parsing variables inside it. Which syntax should you use and why?
$query = ???
SELECT * FROM users WHERE name = '$name';
???;
hard
A. Use nowdoc to keep the query text exactly as typed, no variable parsing.
B. Use single quotes with concatenation for variables.
C. Use double quotes with escaped variables inside the string.
D. Use heredoc to allow variable parsing for dynamic queries.

Solution

  1. Step 1: Understand requirement

    The query should keep variables like $name as plain text, not replaced by PHP values.
  2. Step 2: Choose correct syntax

    Nowdoc syntax keeps the string exactly as typed, so variables are not parsed, perfect for raw SQL queries.
  3. Final Answer:

    Use nowdoc to keep the query text exactly as typed, no variable parsing. -> Option A
  4. Quick Check:

    Nowdoc = raw text, no variable parsing [OK]
Hint: Use nowdoc for raw multi-line strings without variable parsing [OK]
Common Mistakes:
  • Using heredoc and expecting variables not to parse
  • Trying to escape variables inside double quotes unnecessarily
  • Concatenating strings instead of using nowdoc for raw text
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