PHP – Array – Valor
Función que nos devuelve el valor de una calve, sin importar si esta tiene acentos, mayúsculas, minúsculas o algún carácter especial.
Si no encuentra la clave devuelve un valor vacío.
/**
* Class HelperArray
*/
abstract class HelperArray
{
/**
* Devuelve el valor de una clave.
* Si el parámetro no es un array, se convierte a array.
* La clave es independiente de maýusculas, minúsculas y acentos.
*
* @param array $arr
* @param mixed $key
*
* @return mixed
*/
public static function getValueByKey($arr, $key)
{
$arr_tmp = HelperConvert::toArray($arr);
$key = HelperString::eliminarAcentos($key);
$key = HelperString::toLower($key);
// Como la función array_key_exists es sensitiva a
// mayúsculas y minúsculas
// hacemos una copia de array poniendo las claves en minúsculas
// la comparación se hace en minúsculas.
$array_copy = array_map(function ($val)
{
$val = HelperString::eliminarAcentos($val);
return HelperString::toLower($val);;
}, array_keys($arr_tmp));
/* Si existe, tenemos su posición dentro del array */
$pos = array_search($key, $array_copy);
if ($pos === false) {
return null;
}
/* Obtenemos un array de un sólo valor,
que es el que nos interesa */
$arr_single = array_slice($arr_tmp, $pos, 1);
/* Devolvemos su valor */
return $arr_single[ array_keys($arr_single)[ 0 ] ];
}
}
Funciones relacionadas
- HelperString::toLower : Convertir un texto a minúsculas con acentos
- HelperString::eliminarAcentos : Eliminar todos los acentos de un texto
- HelperConvert::toArray : Convertir cualquier valor a un array
