$currentValues 'values' map from buildPageData() * @param array $post user POST body (bodyAll()) * @param list $sectionKeys keys owned by this section * @return array */ function settingsSectionMergePost(array $currentValues, array $post, array $sectionKeys): array { $seed = []; foreach ($currentValues as $key => $value) { if (is_bool($value)) { if ($value) { $seed[$key] = '1'; } continue; } if (is_array($value)) { $seed[$key] = $value; continue; } if ($value !== null) { $seed[$key] = (string) $value; } } foreach ($sectionKeys as $key) { unset($seed[$key]); if (array_key_exists($key, $post)) { $seed[$key] = $post[$key]; } } return $seed; }