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 数组函数。