在PHP 中, array_flip()是一個非常實用的數組函數,它可以將數組中的鍵和值進行對調。這個特性可以被巧妙地用來判斷一個數組中。
array array_flip(array $array)
這個函數會返回一個新數組,將原數組中的鍵變成值,值變成鍵。但是需要注意的是:如果原數組中有重複的值, array_flip()會覆蓋前面的鍵,只保留最後一個。
因此,我們可以通過對比原數組和翻轉後的數組的長度來判斷是否有重複的值。如果兩者長度不一致,就說明原數組中的值不唯一。
function isArrayValuesUnique(array $arr): bool {
$flipped = array_flip($arr);
return count($arr) === count($flipped);
}
// 測試用例
$uniqueArray = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry'];
$nonUniqueArray = ['a' => 'apple', 'b' => 'banana', 'c' => 'apple'];
echo "唯一數組測試結果:";
echo isArrayValuesUnique($uniqueArray) ? '是唯一的' : '有重複';
echo "\n";
echo "非唯一數組測試結果:";
echo isArrayValuesUnique($nonUniqueArray) ? '是唯一的' : '有重複';
唯一數組測試結果:是唯一的
非唯一數組測試結果:有重複
假設你有一個用戶註冊系統,需要判斷用戶輸入的多個字段(例如郵箱、用戶名)是否有重複值,可以用這個方法快速判斷:
$userInputs = [
'email1' => 'user1@m66.net',
'email2' => 'user2@m66.net',
'email3' => 'user1@m66.net', // 重複
];
if (!isArrayValuesUnique($userInputs)) {
echo "存在重複的用户信息,請檢查!";
} else {
echo "所有用戶信息都唯一,繼續處理。";
}
利用array_flip()來判斷數組值是否唯一,是一個簡潔而高效的技巧。其核心原理在於PHP 中數組鍵的唯一性,一旦發生重複值,在翻轉過程中就會自動去重,我們只需要對比長度即可。
這種方法適用於一維數組的值唯一性判斷,是在面試或實際開發中都值得掌握的小技巧。