PHP数组键值互换array_flip用法 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])) { /* 允许 */ }
常见坑
- 值重复时,后面的覆盖前面的键,数据丢失。
- 值必须是字符串或整数,浮点/布尔互换会出错。
- 原数组键是数字,互换后变成字符串键,注意类型。
- 二维数组不能直接 flip,只支持一维标量值。
- 以为 flip 不改变原数组,它返回新数组。
- 关联数组顺序在 flip 后按新键排列。
- 大数组 flip 复制一份,内存翻倍。
总结
array_flip 把值变键、键变值,适合反向查找和白名单 O(1) 判断。要求一维、值为字符串/整数,重复值会覆盖。去重可用两次 flip,复杂结构需手动转换。
遇到问题加QQ23979811 协助处理