Discover how a couple of simple functions can save you from writing repetitive, error-prone code!
Why Compact and extract functions in PHP? - Purpose & Use Cases
Imagine you have many variables in your PHP script, and you want to pass them all to a function or include them in an array for easy handling.
Doing this manually means writing each variable name and value one by one, which can get messy and tiring.
Manually creating arrays with many variables is slow and easy to make mistakes, like forgetting a variable or mixing up names.
Also, manually extracting variables from arrays requires writing repetitive code, which is error-prone and hard to maintain.
PHP's compact() function lets you quickly create an array from variable names, and extract() does the opposite by turning array keys into variables.
This makes your code cleaner, shorter, and easier to read and maintain.
$data = array('name' => $name, 'age' => $age, 'city' => $city); $name = $data['name']; $age = $data['age']; $city = $data['city'];
$data = compact('name', 'age', 'city'); extract($data);
You can easily bundle and unbundle variables, making data handling in your PHP scripts fast, clean, and less error-prone.
When passing many form input values to a template or function, compact() quickly creates an array of all inputs, and extract() can restore them as variables in the template.
Manually managing many variables is slow and error-prone.
compact() and extract() simplify variable-to-array and array-to-variable conversions.
These functions make your PHP code cleaner and easier to maintain.
Practice
compact do?Solution
Step 1: Understand the purpose of
Thecompactcompactfunction takes variable names as strings and creates an associative array where keys are those names and values are the variables' values.Step 2: Differentiate from
extractextractdoes the opposite by creating variables from array keys, so it is not the correct description forcompact.Final Answer:
Creates an array from given variable names and their values -> Option AQuick Check:
compact= array from variables [OK]
- Confusing compact with extract
- Thinking compact extracts variables
- Assuming compact converts arrays to strings
extract on an array $data?Solution
Step 1: Recall the function call syntax
In PHP, functions are called by their name followed by parentheses containing arguments. Soextract($data);is the correct syntax.Step 2: Identify incorrect syntax
Options B, C, and D misuse assignment, object operator, or array syntax, which are invalid for function calls.Final Answer:
extract($data); -> Option BQuick Check:
Function call syntax = extract($data); [OK]
- Using assignment instead of function call
- Using object operator (->) incorrectly
- Adding brackets after variable name
$name = "Alice";
$age = 30;
$arr = compact('name', 'age');
print_r($arr);
Solution
Step 1: Understand
Thecompactbehaviorcompactfunction creates an array where keys are the variable names as strings and values are the current values of those variables.Step 2: Apply to given variables
Variables$nameand$agehave values "Alice" and 30, so the array will be ['name' => 'Alice', 'age' => 30].Final Answer:
Array ( [name] => Alice [age] => 30 ) -> Option DQuick Check:
compact('name','age') = array with keys and values [OK]
- Thinking compact returns variable values as keys
- Expecting numeric keys instead of variable names
- Assuming compact prints variables directly
$data = ['color' => 'red', 'size' => 'large'];
extract($data);
echo $colour;
Solution
Step 1: Check variable names created by extract()
Theextractfunction creates variables named exactly as the array keys, so it creates$colorand$size.Step 2: Compare echoed variable name
The code tries to echo$colourwhich is different from$color, causing an undefined variable notice.Final Answer:
Variable name mismatch: $colour vs 'color' key -> Option AQuick Check:
extract keys = variable names; spelling must match [OK]
- Assuming extract changes variable names
- Thinking extract only works on indexed arrays
- Ignoring PHP notices for undefined variables
$info = ['name' => 'Bob', 'age' => 25, 'city' => 'Paris', 'age' => 30];, what will be the result of extract($info); echo $age;?Solution
Step 1: Understand PHP array key behavior
When an array has duplicate keys, the last value overwrites previous ones. Here, 'age' appears twice with values 25 and 30, so 30 is kept.Step 2: Apply extract() and echo
Extract creates variables from keys, so$agewill be 30, the last value. Echoing$ageprints 30.Final Answer:
30 -> Option CQuick Check:
Duplicate keys keep last value; extract uses that [OK]
- Expecting first duplicate key value to be used
- Thinking extract throws error on duplicates
- Assuming undefined variable error due to duplicates
Ready to prove it?
Pass the test and this pattern moves unknown
