# compact

(PHP 4, PHP 5, PHP 7)

compact — 建立一个数组，包括变量名和它们的值

### 说明

compact ( mixed `$varname1` [, mixed `$...` ] ) : array

创建一个包含变量与其值的数组。

对每个参数，compact() 在当前的符号表中查找该变量名并将它添加到输出的数组中，变量名成为键名而变量的内容成为该键的值。简单说，它做的事和 extract() 正好相反。返回将所有变量添加进去后的数组。

> Note:

> 在 PHP 7.3 之前版本，未设置的字符串会被静默忽略。

### 参数

`varname1`

  compact() 接受可变的参数数目。每个参数可以是一个包括变量名的字符串或者是一个包含变量名的数组，该数组中还可以包含其它单元内容为变量名的数组， compact() 可以递归处理。

### 返回值

返回输出的数组，包含了添加的所有变量。

### 错误／异常

如果字符串指向的变量未定义，compact() 会产生 E_NOTICE 级错误。

### 更新日志

版本 | 说明
--- | ---
7.3.0 | 现在，如果字符串指向的变量未定义，compact() 会产生 E_NOTICE 级错误。 在此之前，此类问题会静默忽略掉。

### 范例

Example #1 compact() 例子

    <?php
    $city  = "San Francisco";
    $state = "CA";
    $event = "SIGGRAPH";

    $location_vars = array("city", "state");

    $result = compact("event", "nothing_here", $location_vars);
    print_r($result);
    ?>

以上例程会输出：

    Array
    (
        [event] => SIGGRAPH
        [city] => San Francisco
        [state] => CA
    )

### 注释

> Note: Gotcha

> 因为可变变量也许不能在函数内部用于 PHP 的超全局数组，此时不能将超全局数组传递入 compact() 中。

### 参见

- extract() - 从数组中将变量导入到当前的符号表