«

PHP数组键值互换array_flip用法

时间:2026-11-15 07:17     作者:emer     分类: PHP


前言

需要把数组的值变成键、键变成值时,array_flip 一步完成,常用于反向查找、去重、建立快速索引。但它对重复值和值类型有限制。本文讲解基本用法、反向查找、限制和替代方案。

操作步骤

1. 键值互换

$fruits = ['a' => '苹果', 'b' => '香蕉'];
$reversed = array_flip($fruits);
// ['苹果'=>'a', '香蕉'=>'b']

2. 反向判断某值是否存在

$codes = ['苹果' => 'a'];
if (isset($codes['苹果'])) {
    echo '存在,代码:' . $codes['苹果'];
}

3. 配合去重

$unique = array_flip(array_flip($arr));

4. 用值做 O(1) 查询

$allow = array_flip(['jpg','png','gif']);
if (isset($allow[$ext])) { /* 允许 */ }

常见坑

  1. 值重复时,后面的覆盖前面的键,数据丢失。
  2. 值必须是字符串或整数,浮点/布尔互换会出错。
  3. 原数组键是数字,互换后变成字符串键,注意类型。
  4. 二维数组不能直接 flip,只支持一维标量值。
  5. 以为 flip 不改变原数组,它返回新数组。
  6. 关联数组顺序在 flip 后按新键排列。
  7. 大数组 flip 复制一份,内存翻倍。

总结

array_flip 把值变键、键变值,适合反向查找和白名单 O(1) 判断。要求一维、值为字符串/整数,重复值会覆盖。去重可用两次 flip,复杂结构需手动转换。

遇到问题加QQ23979811 协助处理

标签: PHP 数组 array_flip 键值互换