Bird
Raised Fist0
PHPprogramming~20 mins

Settype for changing types in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Settype Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this PHP code using settype?

Consider the following PHP code snippet:

$var = '123abc';
settype($var, 'int');
echo $var;

What will be printed?

PHP
$var = '123abc';
settype($var, 'int');
echo $var;
A123
B0
C123abc
DError
Attempts:
2 left
💡 Hint

When converting a string to int, PHP reads the number from the start until it hits a non-digit.

❓ Predict Output
intermediate
2:00remaining
What is the output after changing type to boolean?

What will this PHP code print?

$value = 0;
settype($value, 'bool');
echo $value ? 'true' : 'false';
PHP
$value = 0;
settype($value, 'bool');
echo $value ? 'true' : 'false';
Atrue
Bfalse
C0
D1
Attempts:
2 left
💡 Hint

Remember that 0 is considered false in boolean context.

❓ Predict Output
advanced
2:00remaining
What is the output when converting an array to string with settype?

Analyze this PHP code:

$arr = [1, 2, 3];
settype($arr, 'string');
echo $arr;

What will it output?

PHP
$arr = [1, 2, 3];
settype($arr, 'string');
echo $arr;
AError
B1,2,3
CArray
DArrayObject
Attempts:
2 left
💡 Hint

When converting an array to string, PHP returns a fixed word.

❓ Predict Output
advanced
2:00remaining
What error does this code raise when using settype with an invalid type?

Consider this PHP code:

$var = 5;
settype($var, 'unknown');

What happens when this runs?

PHP
$var = 5;
settype($var, 'unknown');
ANo error, $var remains unchanged
BParse error
CFatal error: Unknown type
DWarning: settype() expects parameter 2 to be string of valid type
Attempts:
2 left
💡 Hint

PHP warns if the type string is not recognized.

🧠 Conceptual
expert
3:00remaining
How many items are in the array after this settype operation?

What is the count of elements in $data after this code runs?

$data = '1,2,3';
settype($data, 'array');
$count = count($data);
echo $count;
PHP
$data = '1,2,3';
settype($data, 'array');
$count = count($data);
echo $count;
A1
B3
C0
DError
Attempts:
2 left
💡 Hint

Converting a string to array with settype wraps it inside an array.

Practice

(1/5)
1. What does the PHP function settype do?
easy
A. It changes the type of a variable directly.
B. It creates a new variable with a different type.
C. It checks the type of a variable without changing it.
D. It converts a variable to a string only.

Solution

  1. Step 1: Understand the purpose of settype

    The function settype modifies the type of the variable passed to it directly, not creating a new variable.
  2. Step 2: Compare options with the function behavior

    Only It changes the type of a variable directly. correctly states that it changes the type of a variable directly.
  3. Final Answer:

    It changes the type of a variable directly. -> Option A
  4. Quick Check:

    settype changes variable type = A [OK]
Hint: Remember: settype changes the original variable type [OK]
Common Mistakes:
  • Thinking settype creates a new variable
  • Confusing settype with type checking functions
  • Believing settype only converts to string
2. Which of the following is the correct syntax to change variable $var to an integer using settype?
easy
A. settype($var, "int");
B. settype($var, int);
C. settype($var, 'int');
D. settype($var, 'integer');

Solution

  1. Step 1: Recall the correct type string for integers in settype

    PHP expects the type as a string like 'int' or 'integer'. Both 'int' and 'integer' are accepted, but 'integer' is the official type name.
  2. Step 2: Check syntax correctness

    settype($var, 'integer'); uses quotes and the correct type string 'integer'. settype($var, 'int'); also works as an alias. settype($var, int); misses quotes, causing syntax error. settype($var, "int"); uses double quotes which is valid but less common; both single and double quotes work in PHP.
  3. Final Answer:

    settype($var, 'integer'); -> Option D
  4. Quick Check:

    Use quotes around type string 'integer' = A [OK]
Hint: Always put the type as a quoted string in settype [OK]
Common Mistakes:
  • Omitting quotes around the type string
  • Using undefined type names without quotes
  • Confusing 'int' and int without quotes
3. What will be the output of the following PHP code?
$var = "123abc";
settype($var, 'int');
echo $var;
medium
A. 0
B. 123abc
C. 123
D. Error

Solution

  1. Step 1: Understand how settype converts string to int

    When converting a string to int, PHP reads the number from the start until it hits a non-digit character. Here, "123abc" converts to 123.
  2. Step 2: Check the echo output

    After settype, $var is integer 123, so echo prints 123.
  3. Final Answer:

    123 -> Option C
  4. Quick Check:

    String to int conversion stops at first non-digit = A [OK]
Hint: String to int stops at first non-digit character [OK]
Common Mistakes:
  • Expecting the whole string to convert
  • Thinking conversion results in 0 for mixed strings
  • Assuming settype throws an error on mixed strings
4. Identify the error in the following PHP code:
$value = "true";
settype($value, bool);
echo $value;
medium
A. Variable name is invalid.
B. Missing quotes around 'bool' in settype.
C. Echo cannot print boolean values.
D. Cannot convert string 'true' to boolean.

Solution

  1. Step 1: Check settype syntax

    The second argument to settype must be a string in quotes. Here, bool is unquoted, causing a syntax error.
  2. Step 2: Verify other options

    Converting string 'true' to boolean is valid. Echo can print booleans as 1 or empty. Variable name is valid.
  3. Final Answer:

    Missing quotes around 'bool' in settype. -> Option B
  4. Quick Check:

    Type name must be quoted string = A [OK]
Hint: Always quote the type name in settype [OK]
Common Mistakes:
  • Forgetting quotes around type string
  • Thinking echo can't print booleans
  • Assuming variable names cause errors here
5. Given the array $arr = ['1', '2', '3.5', 'true', 'false', '0'];, which code snippet correctly converts all elements to their proper types using settype?
hard
A. foreach ($arr as &$v) { if ($v === 'true' || $v === 'false') settype($v, 'bool'); elseif (strpos($v, '.') !== false) settype($v, 'float'); else settype($v, 'int'); }
B. foreach ($arr as &$v) { if (is_numeric($v)) settype($v, 'float'); else settype($v, 'bool'); }
C. foreach ($arr as &$v) { settype($v, 'int'); }
D. foreach ($arr as &$v) { settype($v, 'string'); }

Solution

  1. Step 1: Analyze the array elements and desired types

    Elements are strings representing integers, floats, and booleans. We want to convert 'true'/'false' to bool, numbers with '.' to float, others to int.
  2. Step 2: Evaluate each option's logic

    foreach ($arr as &$v) { settype($v, 'int'); } converts all to int, losing floats and booleans. foreach ($arr as &$v) { if (is_numeric($v)) settype($v, 'float'); else settype($v, 'bool'); } converts all numeric to float, which is incorrect for integers. foreach ($arr as &$v) { if ($v === 'true' || $v === 'false') settype($v, 'bool'); elseif (strpos($v, '.') !== false) settype($v, 'float'); else settype($v, 'int'); } checks for 'true'/'false' strings to bool, floats by '.', else int - this matches the requirement. foreach ($arr as &$v) { settype($v, 'string'); } converts all to string, no type change.
  3. Final Answer:

    foreach ($arr as &$v) { if ($v === 'true' || $v === 'false') settype($v, 'bool'); elseif (strpos($v, '.') !== false) settype($v, 'float'); else settype($v, 'int'); } -> Option A
  4. Quick Check:

    Check string values carefully for correct type conversion = C [OK]
Hint: Check string content to decide type before settype [OK]
Common Mistakes:
  • Converting all to int losing floats and booleans
  • Using is_numeric alone without checking for booleans
  • Forgetting to handle 'true' and 'false' strings
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