PHPでは、 array_flip()は、配列内のキーと値をシンジケートできる非常に実用的な配列関数です。この機能は、配列を判断するために巧妙に使用できます。
array array_flip(array $array)
この関数は新しい配列を返し、元の配列のキーを値に変え、値をキーに変えます。ただし、元の配列に重複した値がある場合、 array_flip()が前のキーを上書きし、最後のキーのみが保持されることに注意する必要があります。
したがって、元の配列と反転アレイの長さを比較することにより、重複した値があるかどうかを判断できます。 2つの長さが一貫性がない場合、それは元の配列の値が一意ではないことを意味します。
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()を使用して、Array値が一意であるかどうかを判断することは簡潔で効率的な手法です。その核となる原則は、PHPの配列キーの独自性にあります。繰り返しの値が発生すると、フリッププロセス中に自動的に重複排除されます。長さを比較するだけです。
この方法は、1次元アレイの価値の一意性を判断するのに適しており、インタビューや実際の開発でマスターする価値のあるヒントです。