<?php
/**
* Synchronizes resources of arrays for an experiment with basic sanity checks.
*
* @param array $arrays An array of arrays to synchronize.
* @param string $sync_key The key to use for synchronization.
*
* @return array|false Returns a new array with synchronized resources, or false on error.
*/
function syncArrays(array $arrays, string $sync_key)
{
if (empty($arrays)) {
return []; // Return empty array if input is empty
}
$synchronized = [];
foreach ($arrays as $array) {
if (!is_array($array)) {
error_log("Error: Invalid array element found. Skipping."); // Log error
continue;
}
if (!isset($array[$sync_key])) {
error_log("Error: Sync key '$sync_key' not found in array. Skipping."); // Log error
continue;
}
$sync_value = $array[$sync_key];
if (!is_numeric($sync_value)) {
error_log("Error: Sync value must be numeric. Skipping."); // Log error
continue;
}
if (!isset($synchronized[$sync_value])) {
$synchronized[$sync_value] = $array; // Initialize entry
} else {
// Merge resources, prioritizing current array's values
$synchronized[$sync_value] = array_merge($synchronized[$sync_value], $array);
}
}
// Sanity checks: Ensure all values are arrays
foreach ($synchronized as $key => $array) {
if (!is_array($array)) {
error_log("Error: Synchronized value is not an array. Skipping."); //Log Error
unset($synchronized[$key]);
}
}
if (empty($synchronized)) {
return false; // Return false if no valid synchronized arrays
}
return $synchronized;
}
?>
Add your comment