PHP array_flip 函数
最后修改于 2025 年 3 月 13 日
PHP 的 array_flip
函数会交换数组中所有的键与其对应的值。它有助于反转键值对。
基本定义
array_flip
函数会交换数组的键和值。原始值将成为键,而键将成为返回数组中的值。
语法:array_flip(array $array): array
。值必须是有效的键(字符串或整数)。重复的值将被覆盖。
基本的 array_flip 示例
这演示了在关联数组中简单的键值交换。
basic_array_flip.php
<?php $colors = [ 'red' => '#FF0000', 'green' => '#00FF00', 'blue' => '#0000FF' ]; $flipped = array_flip($colors); print_r($flipped);
输出:十六进制颜色代码成为键,颜色名称成为值。原始键必须是字符串或整数,值必须是有效的键。
处理重复值
当存在重复值时,在翻转后的数组中,最后出现的键会获胜。
duplicate_values.php
<?php $fruitCounts = [ 'apples' => 5, 'oranges' => 3, 'bananas' => 5 ]; $flipped = array_flip($fruitCounts); print_r($flipped);
输出显示只有一个 '5' 键(来自 bananas),因为 apples 的值也是 5。重复值的最后一次出现决定了在结果中保留哪个键。
数字数组翻转
翻转数字数组有效地创建了值到索引的映射。
numeric_array.php
<?php $numbers = [10, 20, 30]; $flipped = array_flip($numbers); print_r($flipped);
输出显示原始值作为键,其原始索引作为值。这创建了一个反向索引,对于反向查找很有用。
类型要求
值必须是有效的键(字符串或整数),否则 array_flip
会发出警告。
type_requirements.php
<?php $mixed = [ 'a' => 1, 'b' => 'two', 'c' => ['invalid'] ]; $flipped = @array_flip($mixed); // Suppress warning print_r($flipped);
输出显示了有效的键值对。数组元素被跳过并发出警告,因为数组不能作为键。请谨慎使用错误抑制。
实际用例
翻转可以创建高效的值到键的查找,用于验证。
practical_use.php
<?php $allowedRoles = ['admin', 'editor', 'viewer']; $roleLookup = array_flip($allowedRoles); $userRole = 'editor'; if (isset($roleLookup[$userRole])) { echo "Access granted"; } else { echo "Access denied"; }
与 in_array
的 O(n) 时间复杂度相比,这种技术提供了 O(1) 的查找时间。翻转后的数组对于检查值是否存在是内存高效的。
最佳实践
- 有效键:确保所有值都可以是有效的数组键。
- 唯一值:注意重复值的行为。
- 内存:翻转大型数组会消耗内存。
- 查找:使用翻转后的数组进行快速值检查。
来源
本教程通过实际示例介绍了 PHP 的 array_flip
函数,展示了键值交换和常见用例。
作者
列出 所有 PHP 数组函数。