現在の位置: ホーム> 最新記事一覧> インタビューの質問:array_flip()を使用して、配列値が一意であるかどうかを判断する方法は?

インタビューの質問:array_flip()を使用して、配列値が一意であるかどうかを判断する方法は?

M66 2025-06-03

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次元アレイの価値の一意性を判断するのに適しており、インタビューや実際の開発でマスターする価値のあるヒントです。