Obtener un valor por su clave sin importar acentos o minúsculas

Código PHP

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