函數原型
array_flip(array $array): array
核心行為
- 返回新數組:原數組的值成為鍵名,原鍵名成為值。
- 原數組的值必須是字符串或整數,否則拋出 Warning 並返回 null。
- 若值重複,**最後一個鍵名**會覆蓋前面的,其餘丟失。
代碼示例
$a = [0=>"Dog", 1=>"Cat", 2=>"Horse"];
print_r(array_flip($a));
// Array ( [Dog] => 0 [Cat] => 1 [Horse] => 2 )
值重複時的表現
$b = ["a"=>"Dog", "b"=>"Cat", "c"=>"Dog"];
print_r(array_flip($b));
// Array ( [Dog] => c [Cat] => b ) // 第一個 Dog 被覆蓋
實戰用途
- 快速構建查找表:
$lookup = array_flip($allowed_values); 後用 isset($lookup[$input]) 判斷合法性,比 in_array() 快(O(1) vs O(n))。
- 統計值頻率預處理: 配合
array_count_values()。
- 反轉映射關係: 如將
[id => name] 轉為 [name => id]。
注意事項
- 嚴格要求值類型為 scalar(int/string),對象/數組/資源會報錯。
- 不修改原數組,返回新數組。