ZetCode

PHP compact 函数

最后修改于 2025 年 3 月 13 日

PHP 的 compact 函数创建一个包含变量及其值的数组。它对于快速将变量打包到数组中非常有用。

基本定义

compact 函数将变量名作为参数,并创建一个数组,其中键是变量名,值是变量的值。

语法:compact(string|array $var_name, ...): array。它接受一个或多个字符串或一个代表变量名的字符串数组。

基本 compact 示例

这演示了使用 compact 从三个简单变量创建数组。

basic_compact.php
<?php

$name = "John";
$age = 30;
$city = "New York";

$person = compact('name', 'age', 'city');

print_r($person);

该函数从作为参数传递的变量创建关联数组。

将 compact 与名称数组一起使用

您可以传递一个变量名数组,而不是多个参数。

compact_with_array.php
<?php

$firstName = "Alice";
$lastName = "Smith";
$email = "alice@example.com";

$vars = ['firstName', 'lastName', 'email'];
$userData = compact($vars);

print_r($userData);

这产生的与单独传递名称相同的结果。当变量名是动态存储的时,数组方法很有用。

使用 compact 处理嵌套变量

当使用数组语法时,compact 可以处理嵌套的变量名。

nested_compact.php
<?php

$user = [
    'name' => 'Bob',
    'profile' => [
        'age' => 25,
        'job' => 'Developer'
    ]
];

extract($user);
$result = compact('name', ['profile' => ['age', 'job']]);

print_r($result);

这显示了如何处理嵌套变量。请注意,您需要先提取数组,才能在当前符号表中获得变量。

将 compact 与未定义变量一起使用

compact 会静默忽略未定义的变量,而不会抛出错误。

undefined_variables.php
<?php

$definedVar = "I exist";
$result = compact('definedVar', 'undefinedVar');

print_r($result); // Only shows definedVar

输出仅包含已定义的变量。当您不确定当前作用域中存在哪些变量时,这种行为可能很有用。

将 compact 与 extract 结合使用

compact 和 extract 可以一起用于变量操作。

compact_extract.php
<?php

$original = [
    'title' => 'PHP Guide',
    'author' => 'Jane Doe',
    'pages' => 350
];

extract($original);
$modified = compact('title', 'author', 'pages');
$modified['edition'] = 2;

print_r($modified);

这从数组中提取变量,然后用附加字段将它们压缩回去。它演示了变量的双向转换。

最佳实践

来源

PHP compact 文档

本教程通过实际示例介绍了 PHP 的 compact 函数,展示了它如何用于从变量创建数组。

作者

我的名字是 Jan Bodnar,我是一位热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教学编程方面拥有超过十年的经验。

列出 所有 PHP 数组函数