1. <?php
  2. /**
  3. * Synchronizes resources of arrays for an experiment with basic sanity checks.
  4. *
  5. * @param array $arrays An array of arrays to synchronize.
  6. * @param string $sync_key The key to use for synchronization.
  7. *
  8. * @return array|false Returns a new array with synchronized resources, or false on error.
  9. */
  10. function syncArrays(array $arrays, string $sync_key)
  11. {
  12. if (empty($arrays)) {
  13. return []; // Return empty array if input is empty
  14. }
  15. $synchronized = [];
  16. foreach ($arrays as $array) {
  17. if (!is_array($array)) {
  18. error_log("Error: Invalid array element found. Skipping."); // Log error
  19. continue;
  20. }
  21. if (!isset($array[$sync_key])) {
  22. error_log("Error: Sync key '$sync_key' not found in array. Skipping."); // Log error
  23. continue;
  24. }
  25. $sync_value = $array[$sync_key];
  26. if (!is_numeric($sync_value)) {
  27. error_log("Error: Sync value must be numeric. Skipping."); // Log error
  28. continue;
  29. }
  30. if (!isset($synchronized[$sync_value])) {
  31. $synchronized[$sync_value] = $array; // Initialize entry
  32. } else {
  33. // Merge resources, prioritizing current array's values
  34. $synchronized[$sync_value] = array_merge($synchronized[$sync_value], $array);
  35. }
  36. }
  37. // Sanity checks: Ensure all values are arrays
  38. foreach ($synchronized as $key => $array) {
  39. if (!is_array($array)) {
  40. error_log("Error: Synchronized value is not an array. Skipping."); //Log Error
  41. unset($synchronized[$key]);
  42. }
  43. }
  44. if (empty($synchronized)) {
  45. return false; // Return false if no valid synchronized arrays
  46. }
  47. return $synchronized;
  48. }
  49. ?>

Add your comment