1. <?php
  2. /**
  3. * Removes duplicate metadata entries from an array of metadata.
  4. *
  5. * @param array $metadata An array of metadata entries (e.g., associative arrays).
  6. * @return array|string A deduplicated array of metadata or an error message if input is invalid.
  7. */
  8. function removeDuplicateMetadata(array $metadata): array|string
  9. {
  10. if (!is_array($metadata)) {
  11. return "Error: Input must be an array.";
  12. }
  13. $uniqueMetadata = [];
  14. $seenKeys = []; // Keep track of keys to avoid duplicates
  15. foreach ($metadata as $key => $value) {
  16. if (!is_array($value)) {
  17. return "Error: Metadata values must be arrays.";
  18. }
  19. // Check if the key already exists
  20. if (!in_array($key, $seenKeys)) {
  21. $uniqueMetadata[$key] = $value;
  22. $seenKeys[] = $key;
  23. }
  24. }
  25. return $uniqueMetadata;
  26. }
  27. //Example Usage (for testing)
  28. /*
  29. $metadata = [
  30. ['name' => 'John', 'age' => 30],
  31. ['name' => 'Jane', 'age' => 25],
  32. ['name' => 'John', 'age' => 30], // Duplicate
  33. ['name' => 'Peter', 'age' => 40],
  34. ];
  35. $deduplicatedMetadata = removeDuplicateMetadata($metadata);
  36. if (is_string($deduplicatedMetadata)) {
  37. echo $deduplicatedMetadata . "\n"; // Print error message
  38. } else {
  39. print_r($deduplicatedMetadata);
  40. }
  41. */
  42. ?>

Add your comment