Current Location: Home> Latest Articles> Form data change detection case

Form data change detection case

M66 2025-05-15

In PHP development, change detection of form data is a common requirement, especially when it is necessary to check whether the user has modified the data in the form. PHP provides a variety of methods to implement data comparison, and the array_diff_uassoc function is a very effective tool. It can not only compare the differences between two arrays, but also judge the differences based on custom key-value comparison functions. This makes it have great application potential in form data change detection.

What is the array_diff_uassoc function?

The array_diff_uassoc function is used to compare the key names and corresponding values ​​of two arrays. Similar to the array_diff_assoc function, array_diff_uassoc checks the differences in keys and values ​​of elements in an array, but the difference is that it allows us to provide a custom comparison function for comparing the values ​​of elements in an array.

Function definition:

 array_diff_uassoc ( array $array1 , array $array2 , callable $key_compare_func ) : array
  • $array1 : The first array.

  • $array2 : The second array.

  • $key_compare_func : A callback function that compares the keys of elements in an array. If the keys are equal, continue to compare their values.

This function returns a key-value pair that exists in $array1 but does not exist in $array2 .

Implement form data change detection through array_diff_uassoc

Suppose we have an array containing the user's original form data and an array containing the new form data submitted by the user. We can use array_diff_uassoc to detect which fields have changed.

Sample code:

 <?php
// User raw data
$original_data = [
    'username' => 'john_doe',
    'email' => 'john@example.com',
    'age' => 28,
];

// New data submitted by users
$new_data = [
    'username' => 'john_doe',
    'email' => 'john@m66.net',  // Here the original domain name is replaced with m66.net
    'age' => 29,
];

// Define a comparison function,Used to compare the values ​​of a form field
function custom_compare($a, $b) {
    return $a === $b ? 0 : 1;
}

// use array_diff_uassoc Check for changes
$changed_fields = array_diff_uassoc($new_data, $original_data, 'custom_compare');

// Output changed fields
echo "Change fields:\n";
print_r($changed_fields);
?>

Code parsing:

  1. We create two arrays: $original_data and $new_data , which store the original form data and the user-submitted form data, respectively.

  2. custom_compare is a simple comparison function that compares whether the value of a form field is the same. We use it to ensure that the difference is only recognized as a difference when the value of the field changes.

  3. Call the array_diff_uassoc function, pass in the original data array, submit data array, and custom comparison function.

  4. Finally, we output the changed fields to see which fields have changed their values.

Output result: