I had to come up with a way to convert array keys using undescores (underscore_case) into camelCase. This had to be done recursively since I did not know what arrays will be
You can use preg_replace_callback and change all the keys without to loop on each using array_keys and array_combine:
private function convertKeysToCamelCase($apiResponseArray) {
$keys = preg_replace_callback('/_(.)/', function($m) {
return strtoupper($m[1]);
}), array_keys($apiResponseArray));
return array_combine($keys, $apiResponseArray);
}
or without regex:
private function convertKeysToCamelCase($apiResponseArray) {
$keys = array_map(function ($i) {
$parts = explode('_', $i);
return array_shift($parts). implode('', array_map('ucfirst', $parts));
}, array_keys($apiResponseArray));
return array_combine($keys, $apiResponseArray);
}
You can modify the second function to deal with multidimensional arrays:
private function convertKeysToCamelCase($apiResponseArray) {
$keys = array_map(function ($i) use (&$apiResponseArray) {
if (is_array($apiResponseArray[$i]))
$apiResponseArray[$i] = $this->convertKeysToCamelCase($apiResponseArray[$i]);
$parts = explode('_', $i);
return array_shift($parts) . implode('', array_map('ucfirst', $parts));
}, array_keys($apiResponseArray));
return array_combine($keys, $apiResponseArray);
}