Table of Content
The PHP compact function is a way to pull variables into an array. In this article, you will learn how it works with examples.
What is compact() in PHP?
The compact() function in PHP builds an array using variable names you give it as strings.
PHP checks if those variables exist in the current scope. If they do, it adds them to the array with the variable name as the key and its value as the value.
Here is the syntax:
compact(VARIABLE_NAME, VARIABLE_NAME, ...)- You can pass any number of arguments to
compact(). - Each argument must be either a string or an array of strings.
- PHP combines them all into one result array.
Here is a quick example:
$title = "Home Page";
$user = "Tarek";
$assoc_arr = compact("title", "user");
print_r($assoc_arr);Output:
Array
(
[title] => Home Page
[user] => Tarek
)
Don’t use the compact() function if the variable names are unclear or if your array needs custom keys. Also, skip it if you need to validate or format values before storing them in an array.
Here are its limitation:
- Does not support variable values.
- Does not handle nested arrays or nested variable names.
Let’s move on to the following section to understand how PHP compact works with an array in PHP.
How to Compact an Array in PHP
You can use an array instead of variable names as a parameter like this:
$name = 'Khaldon';
$age = '25 years';
$vars = ['name', 'age'];
$data = compact($vars);
print_r($data);Output:
Array
(
[name] => Khaldon
[age] => 25 years
)
You can also mirge variables with array of variable names:
$name = 'Yaseen Noor';
$age = '25 years';
$country = 'Germany';
$base = ['country'];
$result = compact($base, 'name', 'age');
print_r($result);Output:
Array
(
[country] => Germany
[name] => Yaseen Noor
[age] => 25 years
)
So, why you can’t use compact(['key' => 'value'])?
The compact() expects variable names as strings (or arrays of strings). It does not accept associative arrays like 'key' => 'value'. So, in this example, it will only look for the variable $value.
PHP Compact Examples
Variable not defined:
$name = 'Mike';
$result = compact('name', 'email');
print_r($result);It will show you the following result:
Array
(
[name] => Mike
)
PHP Warning: compact(): Undefined variable $email in /HelloWorld.php on line 3
compact() skips variables that are not defined.
Merge with an existing array:
$name = 'Sara';
$age = 22;
$base = ['country' => 'USA'];
$result = array_merge($base, compact('name', 'age'));
print_r($result);Output:
Array
(
[country] => USA
[name] => Sara
[age] => 22
)
Wrapping Up
In this tutorial, you learned how PHP’s compact() function works and how to use it with variables and arrays. You also saw what it can and cannot do through clear examples.
Here’s a quick recap:
compact()builds an associative array using variable names as keys and their values.- It accepts strings or arrays of strings as arguments.
- It skips undefined variables without throwing an error.
- You can merge variables and arrays of variable names together using
compact(...). - It doesn’t support associative arrays like
['key' => 'value']. - Use it only when your variable names are clear and require no extra formatting.
Thank you for reading. If you want to read more PHP articles, click here.
FAQ’s
What does compact() do in PHP?
What is the syntax of compact() in PHP?
compact('var1', 'var2', ...);
You can also pass arrays of variable names:
compact(['var1', 'var2'], 'var3');Can I use compact() with arrays?
$name = 'Khaldon';
$age = '25 years';
$vars = ['name', 'age'];
$data = compact($vars);
What happens if a variable does not exist?
$name = 'Mike';
$result = compact('name', 'email');
// Only 'name' will be includedSimilar Reads
PHP developers may be need to determine the number of elements in an array. The count() function in PHP makes…
In this tutorial, we will explore a form of superglobal variable in PHP: $_ENV, which symbolizes how PHP reaches for…
The PHP singleton design pattern makes sure that the class has only one instance and provides a global access point…
JSON is used in most of your web applications for dealing with data, and so, in a way, PHP JSON…
You can use array_filter in PHP to remove unwanted data from arrays. It works with a custom callback or default…
The variable scope in PHP refers to the variables, functions, and classes that can be accessed within different parts of…
Actually, the PHP enumerable is a new feature of 8.1 which allows you to define a new type. This feature…
The array_key_first helps you to get the first key of an array directly in PHP. It saves time and removes…
Sometimes, you may need to list collections with MongoDB in a PHP environment to manage or analyze your database structure.…
Whether you are just trying to keep your app from crashing or making sure your users’ uploads don’t accidentally overwrite…