PHPでは、 array_diff_uassoc()関数は、2つの配列を比較し、キー価値ペアで異なる部分を見つけるための非常に強力なツールです。 array_diff_assoc()とは異なり、 array_diff_uassoc()を使用すると、キー名の比較関数をカスタマイズできます。
array_diff_uassoc()関数は、2つの配列と対応する値のキー名を比較するために使用され、異なるキー値ペアを含む配列を返します。その関数の署名は次のとおりです。
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
$ array1 :最初の配列、通常はユーザーが提出したデータ。
$ array2 :2番目の配列、通常はデフォルト値。
$ key_compare_func :キーを比較するために使用されるコールバック関数。 0を返すことはキーが同じであることを意味し、他の値はキーが異なることを意味します。
ユーザーがデータをデフォルト値に送信し、違いを見つけるフォームを開発しているとします。 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";
}
?>
デフォルト値とユーザーがサビされたデータを定義します。
$ default_values配列はシステムのデフォルトデータであり、ユーザーがサビされたデータは$ user_dataアレイに保存されます。
カスタムキー比較関数:
custom_key_compareは、配列のキーを比較するために定義する関数です。ここでは、strcmp()関数を使用して、キーで文字列比較を実行します。
array_diff_uassoc()を呼び出します:
array_diff_uassoc()関数を使用して、2つの配列(ユーザーデータとデフォルト値)を比較し、カスタムキー比較関数に渡します。
この関数は、キー名または値が異なるキー価値ペアを含む配列を返します。
出力結果:
違いがある場合、異なるデータ項目を出力します。両方がまったく同じ場合、プロンプトメッセージが出力されます。
Webサイトユーザー設定ページを作成しているとし、ユーザーが送信したフォームデータをシステムのデフォルト構成と比較して、変更されたアイテムを見つける必要があるとします。 array_diff_uassoc()を使用すると、多くの比較ロジックを手動で書くことなく、簡単にこれを実現できます。
キー名の比較: array_diff_uassoc()は、キー名とキー値のみを比較します。キー名に関係なく値を比較する場合は、 array_diff()またはarray_diff_assoc()を使用することを検討してください。
コールバック関数の使用: key_compare_funcコールバック関数は非常に柔軟であり、実際のニーズに応じてキー名を比較する方法を決定できます。