1. <?php
  2. /**
  3. * Merges user datasets for quick fixes with basic input validation.
  4. *
  5. * @param array $datasets An array of user datasets. Each dataset is an array of user information.
  6. * @return array A merged array of user datasets, or an error message if validation fails.
  7. */
  8. function mergeUserDatasets(array $datasets): array|string
  9. {
  10. $mergedData = [];
  11. foreach ($datasets as $dataset) {
  12. // Basic validation: Check if the dataset is an array
  13. if (!is_array($dataset)) {
  14. return "Error: Dataset must be an array.";
  15. }
  16. foreach ($dataset as $user) {
  17. // Basic validation: Check if the user is an associative array
  18. if (!is_array($user)) {
  19. return "Error: User data must be an associative array.";
  20. }
  21. // Validate required fields (e.g., 'id', 'name', 'email')
  22. if (!isset($user['id']) || !isset($user['name']) || !isset($user['email'])) {
  23. return "Error: Missing required fields (id, name, email).";
  24. }
  25. // Sanitize input (basic example)
  26. $user['name'] = htmlspecialchars(trim($user['name']));
  27. $user['email'] = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
  28. $user['id'] = intval($user['id']); //Ensure id is an integer
  29. $mergedData[] = $user;
  30. }
  31. }
  32. return $mergedData;
  33. }
  34. // Example Usage:
  35. /*
  36. $dataset1 = [
  37. ['id' => 1, 'name' => 'John Doe', 'email' => 'john.doe@example.com'],
  38. ['id' => 2, 'name' => 'Jane Smith', 'email' => 'jane.smith@example.com'],
  39. ];
  40. $dataset2 = [
  41. ['id' => 3, 'name' => 'Peter Jones', 'email' => 'peter.jones@example.com'],
  42. ];
  43. $mergedDatasets = mergeUserDatasets([$dataset1, $dataset2]);
  44. if (is_string($mergedDatasets)) {
  45. echo $mergedDatasets . "\n"; // Output error message
  46. } else {
  47. print_r($mergedDatasets); // Output merged data
  48. }
  49. */
  50. ?>

Add your comment