Bird
Raised Fist0
PHPprogramming~20 mins

Loose comparison vs strict comparison in PHP - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Master of PHP Comparison
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of loose comparison with different types
What is the output of this PHP code snippet?
PHP
<?php
$a = 0;
$b = '0';
if ($a == $b) {
    echo 'Equal';
} else {
    echo 'Not equal';
}
?>
ANot equal
BError
CEqual
D0
Attempts:
2 left
💡 Hint
Loose comparison converts types before comparing.
❓ Predict Output
intermediate
2:00remaining
Output of strict comparison with different types
What is the output of this PHP code snippet?
PHP
<?php
$a = 0;
$b = '0';
if ($a === $b) {
    echo 'Equal';
} else {
    echo 'Not equal';
}
?>
AEqual
BNot equal
CError
D0
Attempts:
2 left
💡 Hint
Strict comparison checks both value and type.
❓ Predict Output
advanced
2:00remaining
Loose comparison with boolean and string
What is the output of this PHP code snippet?
PHP
<?php
$a = false;
$b = 'any string';
if ($a == $b) {
    echo 'Equal';
} else {
    echo 'Not equal';
}
?>
ANot equal
BError
CEqual
DFalse
Attempts:
2 left
💡 Hint
Loose comparison converts string to boolean when compared to boolean.
❓ Predict Output
advanced
2:00remaining
Strict comparison with boolean and string
What is the output of this PHP code snippet?
PHP
<?php
$a = false;
$b = 'any string';
if ($a === $b) {
    echo 'Equal';
} else {
    echo 'Not equal';
}
?>
AEqual
BFalse
CError
DNot equal
Attempts:
2 left
💡 Hint
Strict comparison requires same type and value.
🧠 Conceptual
expert
3:00remaining
Why does loose comparison between 0 and 'foo' return true?
In PHP, why does the expression (0 == 'foo') evaluate to true?
ABecause 'foo' is converted to 0 in numeric context, so 0 == 0 is true.
BBecause PHP treats all strings as true in loose comparison.
CBecause PHP throws a warning and returns true by default.
DBecause 0 is converted to string '0' and compared to 'foo'.
Attempts:
2 left
💡 Hint
Think about how PHP converts strings to numbers in loose comparison.

Practice

(1/5)
1. What is the main difference between == and === in PHP?
easy
A. == compares values after type conversion, === compares value and type exactly
B. == compares only types, === compares only values
C. == is used for assignment, === is used for comparison
D. == compares memory addresses, === compares values

Solution

  1. Step 1: Understand loose comparison

    Loose comparison (==) converts types if needed and then compares values.
  2. Step 2: Understand strict comparison

    Strict comparison (===) checks both value and type without conversion.
  3. Final Answer:

    == compares values after type conversion, === compares value and type exactly -> Option A
  4. Quick Check:

    Loose == vs Strict === = == compares values after type conversion, === compares value and type exactly [OK]
Hint: Remember: === means exactly equal type and value [OK]
Common Mistakes:
  • Thinking == compares types only
  • Confusing assignment (=) with comparison (==)
  • Assuming === converts types before comparing
2. Which of the following is the correct syntax for strict comparison in PHP?
easy
A. $a = $b;
B. $a !== $b;
C. $a == $b;
D. $a === $b;

Solution

  1. Step 1: Identify strict comparison operator

    Strict comparison uses three equal signs: ===.
  2. Step 2: Check syntax correctness

    $a === $b; is valid syntax for strict comparison.
  3. Final Answer:

    $a === $b; -> Option D
  4. Quick Check:

    Strict comparison syntax = $a === $b; [OK]
Hint: Use three equal signs for strict comparison [OK]
Common Mistakes:
  • Typing == instead of ===
  • Using = which is assignment, not comparison
  • Confusing == (loose) with === (strict)
3. What will be the output of the following PHP code?
$a = 0;
$b = '0';
if ($a == $b) {
echo 'Equal';
} else {
echo 'Not Equal';
}
if ($a === $b) {
echo ' Strictly Equal';
} else {
echo ' Not Strictly Equal';
}
medium
A. Equal Strictly Equal
B. Not Equal Strictly Equal
C. Equal Not Strictly Equal
D. Not Equal Not Strictly Equal

Solution

  1. Step 1: Evaluate loose comparison ($a == $b)

    $a is integer 0, $b is string '0'. Loose comparison converts types, so 0 == '0' is true, prints 'Equal'.
  2. Step 2: Evaluate strict comparison ($a === $b)

    Strict comparison checks type and value. Integer 0 !== string '0', so false, prints ' Not Strictly Equal'.
  3. Final Answer:

    Equal Not Strictly Equal -> Option C
  4. Quick Check:

    0 == '0' true, 0 === '0' false = Equal Not Strictly Equal [OK]
Hint: Loose ignores type, strict checks type too [OK]
Common Mistakes:
  • Assuming strict comparison returns true for 0 and '0'
  • Confusing output order
  • Ignoring spaces in echoed strings
4. Find the error in this PHP code snippet:
$x = '10';
if ($x = 10) {
echo 'Match';
} else {
echo 'No Match';
}
medium
A. Using assignment (=) instead of comparison (==) in if condition
B. Missing semicolon after echo statement
C. Using double quotes instead of single quotes
D. Variable $x is not defined

Solution

  1. Step 1: Check if condition operator

    The condition uses = which assigns 10 to $x instead of comparing.
  2. Step 2: Understand effect of assignment in if

    Assignment returns 10 (truthy), so 'Match' always prints, ignoring original $x value.
  3. Final Answer:

    Using assignment (=) instead of comparison (==) in if condition -> Option A
  4. Quick Check:

    Assignment in if condition = Using assignment (=) instead of comparison (==) in if condition [OK]
Hint: Use == or === for comparison, not = [OK]
Common Mistakes:
  • Confusing = with == in conditions
  • Thinking missing semicolon causes error here
  • Assuming quotes affect comparison operator
5. You want to check if a user input variable $input is exactly the integer 0 (zero) and not a string '0' or other falsy value. Which condition is the best to use?
hard
A. if ($input == 0)
B. if ($input === 0)
C. if ($input != 0)
D. if ($input !== 0)

Solution

  1. Step 1: Understand the requirement

    We want to check if $input is integer 0 exactly, not string '0' or other falsy values.
  2. Step 2: Choose strict comparison

    == allows type conversion, so string '0' == 0 is true, which is not desired. === checks type and value strictly.
  3. Final Answer:

    if ($input === 0) -> Option B
  4. Quick Check:

    Exact type and value check = if ($input === 0) [OK]
Hint: Use === to check exact type and value [OK]
Common Mistakes:
  • Using == and getting true for string '0'
  • Using != or !== which check for inequality
  • Ignoring type differences in comparisons
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