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