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);
这从数组中提取变量,然后用附加字段将它们压缩回去。它演示了变量的双向转换。
最佳实践
- 变量作用域: compact 仅处理当前作用域中的变量。
- 动态名称: 使用数组语法处理动态变量名。
- 错误处理: 如果需要,请检查未定义的变量。
- 性能: 避免在具有许多变量的紧密循环中使用 compact。
来源
本教程通过实际示例介绍了 PHP 的 compact 函数,展示了它如何用于从变量创建数组。
作者
列出 所有 PHP 数组函数。