compact

Description

For each of these, compact() looks for a
variable with that name in the current symbol table and adds it
to the output array such that the variable name becomes the key
and the contents of the variable become the value for that key.
In short, it does the opposite of extract().

Any strings that are not set will simply be skipped.

Parameters

varname1

compact() takes a variable number of parameters.
Each parameter can be either a string containing the name of the
variable, or an array of variable names. The array can contain other
arrays of variable names inside it; compact()
handles it recursively.

The description says that compact is the opposite of extract() but it is important to understand that it does not completely reverse extract(). In particluar compact() does not unset() the argument variables given to it (and that extract() may have created). If you want the individual variables to be unset after they are combined into an array then you have to do that yourself.

This is useful if you want to return all local variables from a function/method or you want to pass all local variables to one. A valid example would be to use this with application hooks/events (if you want the called hook to be able to modify everything in the caller), but otherwise use with care (as methods should be used through their declared interface).