<?php
/**
* Diff datasets of arrays for monitoring purposes.
*
* @param array $dataset1 The first dataset.
* @param array $dataset2 The second dataset.
* @param array $defaultValues Default values to use for missing keys.
* @return array An associative array containing differences.
*/
function diffDatasets(array $dataset1, array $dataset2, array $defaultValues = []): array
{
$differences = [];
// Get all keys from both datasets
$allKeys = array_merge(array_keys($dataset1), array_keys($dataset2));
foreach ($allKeys as $key) {
$value1 = $dataset1[$key] ?? $defaultValues[$key]; // Use default if missing
$value2 = $dataset2[$key] ?? $defaultValues[$key]; // Use default if missing
if ($value1 !== $value2) {
$differences[$key] = [
'dataset1' => $value1,
'dataset2' => $value2,
];
}
}
return $differences;
}
if (require_once 'vendor/autoload.php') { // Check if autoloader is available (optional)
// Example Usage:
$dataset1 = [
'id' => 1,
'name' => 'Alice',
'age' => 30,
'city' => 'New York',
];
$dataset2 = [
'id' => 1,
'name' => 'Alice',
'age' => 31,
'country' => 'USA',
];
$defaultValues = [
'age' => 0,
'city' => 'Unknown',
'country' => 'Unknown',
];
$diff = diffDatasets($dataset1, $dataset2, $defaultValues);
echo "<pre>";
print_r($diff);
echo "</pre>";
} else {
echo "Autoloading failed. Please ensure vendor/autoload.php is present.";
}
?>
Add your comment