Supongamos que tenemos un array con los indices separados por underscore “_”, y necesitamos transformar esos indices a camelCase, esto puede surgir por la necesidad que los nombres de nuestro codigo sigan el standar de la gente de Zend, cuando obtenemos un array de la base de datos, esos datos vienen con la normalizacion de la base, que generalmente es CAMEL_CASE, esto es un problema porque cuando queramos leer los datos de esa tabla tenemos que hacer algo como $row['CAMEL_CASE'], y no va con nuestro “Standar de buenas practicas”, si es por este motivo o algun otro podes usar esta funcion que transforma los indicies de CAMEL_CASE a camelCase. Es la forma mas optima que encontre, si alguno puede aportar algo mejor, podemos optimizarla mas, y conseguir mejoresĀ resultados.
<?php
class Me_Utils_Array
{
/**
* Recibe un array, donde las keys, son palabras con el formato PALABRA_SEGUNDA_TERCERA,
* y devuelve un array con identicos valores, pero las key con el formato de camelCase
*
* @param array $unformatArray
* @return array $camelCaseArray
*/
public static function keyArrayToCamelCase( $unformatArray )
{
$unformatArray = array_change_key_case( $unformatArray, CASE_LOWER );
$camelCaseArray = array();
foreach( $unformatArray as $originalKey => $value ) {
$key = str_replace( ' ', '', ucwords( preg_replace('/[^A-Z^a-z^0-9]+/', ' ', $originalKey )));
$key[0] = strtolower($key[0]);
$camelCaseArray[ $key ] = $value;
}
return $camelCaseArray;
}
}
?>
y la usamos de la siguiente forma
<?php $row = array( 'FIRST_NAME' => 'Nestor', 'LAST_NAME' => 'Kirchner'); $rowNormalized = Me_Utils_Array::keyArrayToCamelCase( $row ); print_r( $rowNormalized ); // Array ( [firstName] => Nestor [lastName] => Kirchner )
