ホームページ > バックエンド開発 > PHPの問題 > PHPで配列内の重複したキー値をクエリする方法

PHPで配列内の重複したキー値をクエリする方法

PHPz
リリース: 2023-04-23 10:51:58
オリジナル
832 人が閲覧しました

PHP 開発では、配列要素の重複したキー値をクエリする必要がよくあります。たとえば、ユーザーが送信したフォーム データを処理する場合、送信されたすべてのデータが一意であることを確認する必要がある場合があります。この記事では、PHP言語を使用して配列内の重複キー値をクエリする方法を紹介します。

PHP の配列は、キーと値の対応を格納できる、非常に一般的に使用される非常に強力なデータ構造です。配列のキーには整数または文字列を指定でき、値には任意のタイプのデータを指定できます。 PHP では、次の構文を使用して配列を作成できます。

$myArray = array('apple', 'banana', 'cherry');
ログイン後にコピー

上記のコードは、各要素が文字列である 3 つの要素を含む配列を作成します。配列では、各要素に対応する数値インデックスがあり、配列要素にはインデックスを通じてアクセスできます。

echo $myArray[0]; // 输出 'apple'
echo $myArray[1]; // 输出 'banana'
echo $myArray[2]; // 输出 'cherry'
ログイン後にコピー

PHP 配列では、数値インデックスに加えて、文字列インデックスも使用できます。例:

$myArray = array('name' => '张三', 'age' => 18, 'gender' => '男');
echo $myArray['name']; // 输出 '张三'
echo $myArray['age']; // 输出 18
echo $myArray['gender']; // 输出 '男'
ログイン後にコピー

開発プロセス中、データの一意性を確保し、データの重複によって引き起こされるエラーを回避するために、配列内の重複したキー値をクエリする必要がよく発生します。たとえば、ユーザーのリストをクエリして、ユーザー名が同じかどうかを確認する必要がある場合があります。 PHP では、array_count_values() 関数を使用して、配列要素の出現数をクエリし、繰り返される要素の数をカウントできます。例:

$users = array('张三', '李四', '王五', '张三', '李四');
$result = array_count_values($users);
print_r($result);
ログイン後にコピー

出力結果は次のとおりです:

Array (
    [张三] => 2
    [李四] => 2
    [王五] => 1
)
ログイン後にコピー

上記のコードでは、5 つの要素を含む配列 $users を作成しましたが、この配列には 2 つの繰り返し要素が含まれています。 array_count_values() 関数を呼び出すことにより、配列内の各要素をキーとして使用し、出現数を値として使用して、新しい配列を形成できます。この新しい配列の出力では、キーは元のデータ配列の要素であり、値はこの要素が元の配列に出現する回数です。

配列内のすべての繰り返し要素をクエリする場合は、次に示すように、array_keys() 関数を使用して、結果配列内の値 2 (1 より大きい出現) を持つキーを取得できます。

$users = array('张三', '李四', '王五', '张三', '李四');
$result = array_count_values($users);
$repeated = array_keys($result, 2);
print_r($repeated);
ログイン後にコピー

出力は次のとおりです:

Array (
    [0] => 张三
    [1] => 李四
)
ログイン後にコピー

上記のコードでは、array_keys() 関数を使用して、値 2 のキーを取得します。これは、配列。この新しい配列の出力内の各要素は重複要素です。

実際の開発では、配列から要素を削除したり、エラー データとしてマークしたりするなど、重複要素をより柔軟に処理する必要がある場合があります。以下は、foreach ループを使用して配列を走査し、重複要素にマークを付ける例です。

$users = array('张三', '李四', '王五', '张三', '李四');
$counts = array();
foreach ($users as $user) {
    if (isset($counts[$user])) {
        $counts[$user]++;
    } else {
        $counts[$user] = 1;
    }
}
foreach ($users as &$user) {
    if ($counts[$user] > 1) {
        $user = $user . '(重复)';
    }
}
print_r($users);
ログイン後にコピー

出力結果は次のとおりです。

Array (
    [0] => 张三(重复)
    [1] => 李四(重复)
    [2] => 王五
    [3] => 张三(重复)
    [4] => 李四(重复)
)
ログイン後にコピー

上記のコードでは、最初に空のオブジェクトを定義します。 array $counts for 元の配列内の各要素の出現数を記録します。次に、元の配列 $users を繰り返します。要素が $counts 配列に既に存在する場合は、その出現数に 1 を追加します。それ以外の場合は、その出現数を 1 に設定します。最後に、元の配列 $users が再度調べられ、要素が $counts 配列内に 1 つ以上出現する場合、その要素は重複要素としてマークされます。

上記のメソッドに加えて、PHP には参照できる配列処理関数が他にも多数あります。たとえば、array_unique() 関数を使用して配列から重複要素を削除したり、array_diff() 関数を使用して重複しない要素を検索したりできます。

つまり、配列内の重複キー値のクエリは、PHP 開発における一般的な要件です。 array_count_values() 関数を使用すると、配列内の各要素の出現数をすばやく取得して、重複要素を処理できます。

以上がPHPで配列内の重複したキー値をクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート