現在の位置: ホーム> 最新記事一覧> array_diff_uassoc()を使用して、ユーザーがサビされたデータをデフォルト値と比較し、違いを見つける方法は?

array_diff_uassoc()を使用して、ユーザーがサビされたデータをデフォルト値と比較し、違いを見つける方法は?

M66 2025-05-15

PHPでは、 array_diff_uassoc()関数は、2つの配列を比較し、キー価値ペアで異なる部分を見つけるための非常に強力なツールです。 array_diff_assoc()とは異なり、 array_diff_uassoc()を使用すると、キー名の比較関数をカスタマイズできます。

1。関数の紹介

array_diff_uassoc()関数は、2つの配列と対応する値のキー名を比較するために使用され、異なるキー値ペアを含む配列を返します。その関数の署名は次のとおりです。

 array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
  • $ array1 :最初の配列、通常はユーザーが提出したデータ。

  • $ array2 :2番目の配列、通常はデフォルト値。

  • $ key_compare_func :キーを比較するために使用されるコールバック関数。 0を返すことはキーが同じであることを意味し、他の値はキーが異なることを意味します。

2。サンプルコード:ユーザーがサビされたデータとデフォルト値の比較

ユーザーがデータをデフォルト値に送信し、違いを見つけるフォームを開発しているとします。 Array_diff_uassoc()を使用してこの関数を実装する方法のコード例を次に示します。

 <?php
// デフォルト値
$default_values = [
    'name' => 'John Doe',
    'email' => 'john.doe@m66.net',
    'age' => 30,
];

// ユーザーがサビされたデータ
$user_data = [
    'name' => 'Jane Doe',
    'email' => 'jane.doe@m66.net',
    'age' => 30,
];

// カスタムキー比較関数
function custom_key_compare($key1, $key2) {
    return strcmp($key1, $key2); // 文字列比較を使用します
}

// 使用 array_diff_uassoc 違いを見つけます
$differences = array_diff_uassoc($user_data, $default_values, 'custom_key_compare');

// 出力の違い
if (!empty($differences)) {
    echo "さまざまなデータ項目を発見します:\n";
    print_r($differences);
} else {
    echo "ユーザーがサビされたデータ与デフォルト値完全一致。\n";
}
?>

3。コード解析

  1. デフォルト値とユーザーがサビされたデータを定義します

    • $ default_values配列はシステムのデフォルトデータであり、ユーザーがサビされたデータは$ user_dataアレイに保存されます。

  2. カスタムキー比較関数

    • custom_key_compareは、配列のキーを比較するために定義する関数です。ここでは、strcmp()関数を使用して、キーで文字列比較を実行します。

  3. array_diff_uassoc()を呼び出します

    • array_diff_uassoc()関数を使用して、2つの配列(ユーザーデータとデフォルト値)を比較し、カスタムキー比較関数に渡します。

    • この関数は、キー名または値が異なるキー価値ペアを含む配列を返します。

  4. 出力結果

    • 違いがある場合、異なるデータ項目を出力します。両方がまったく同じ場合、プロンプトメッセージが出力されます。

4。実用的なアプリケーション

Webサイトユーザー設定ページを作成しているとし、ユーザーが送信したフォームデータをシステムのデフォルト構成と比較して、変更されたアイテムを見つける必要があるとします。 array_diff_uassoc()を使用すると、多くの比較ロジックを手動で書くことなく、簡単にこれを実現できます。

5。注意すべきこと

  • キー名の比較array_diff_uassoc()は、キー名とキー値のみを比較します。キー名に関係なく値を比較する場合は、 array_diff()またはarray_diff_assoc()を使用することを検討してください。

  • コールバック関数の使用key_compare_funcコールバック関数は非常に柔軟であり、実際のニーズに応じてキー名を比較する方法を決定できます。