ZetCode

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 的 array_flip 函数,展示了键值交换和常见用例。

作者

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

列出 所有 PHP 数组函数