PHP – Array – array_map, array_search, key
Función que nos indica si un array tiene una determinda clave, la comparación se realiza en minúsculas y es insensible a los acentos y carácteres especiales.
Utiliza la función array_walk y array_search para comprobar la clave con el valor.
/**
* Class HelperArray
*/
abstract class HelperArray
{
/**
* Indica si una clave existe en un array.
* Se comprueba que al parámetro sea un array.
* Es independiente de maýusculas, minúsculas y acentuadas
*
* @param array $arr
* @param mixed $key
*
* @return bool
*/
public static function existsKey( $arr, $key )
{
// Si no es un array, devolvemos false (No existe)
if (!is_array($arr)) {
return false;
}
$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
$array_copy = array_map(function ($val)
{
$val = HelperString::eliminarAcentos($val);
return HelperString::toLower($val);
}, array_keys($arr));
return (array_search($key, $array_copy) > 0);
}
}
Funciones relacionadas
- HelperString::eliminarAcentos : Eliminar todos los acentos de un texto
- HelperString::toLower : Convertir un texto a minúsculas con acentos
Ejemplos
$tmp = []; $existe = HelperArray::existsKey($tmp, null); echo $existe; // false $tmp = 'ok'; $existe = HelperArray::existsKey($tmp, null); echo $existe; // false $existe = HelperArray::existsKey($tmp, 0); echo $existe; // false $tmp = [1, 2, 3]; $existe = HelperArray::existsKey($tmp, '2'); echo $existe; // true $tmp = [1, 2, 3, '55' => 'cinco']; $existe = HelperArray::existsKey($tmp, 3); echo $existe; // false // no existela clave 3 porque el array es equivalente a [ 0 => 1, 1 => 2, 2 => 3, '55' => 'cinco']; $existe = HelperArray::existsKey($tmp, '55'); echo $existe; // true $existe = HelperArray::existsKey($tmp, 55); echo $existe; // true $existe = HelperArray::existsKey($tmp, 'cinco'); echo $existe; // false $tmp = ['Primero' => 2, 'Segundo']; $existe = HelperArray::existsKey($tmp, 'SEGUNDO'); echo $existe; // false $tmp = ['Primero', 'Segundo']; $existe = HelperArray::existsKey($tmp, 'Segundo'); echo $existe; // false. [0 => 'Primero', 1 = 'Segundo'] $tmp = ['Primero' => 11, 'Segundo' => 22]; $existe = HelperArray::existsKey($tmp, 'SEGUNDO'); echo $existe; // true $tmp = ['Primero' => 11, 'Segundo' => 22]; $existe = HelperArray::existsKey($tmp, 'Segundo'); echo $existe; // true $tmp = ['Primero' => 11, 'Segundo' => 22, 'Último' => 99]; $existe = HelperArray::existsKey($tmp, 'ultimo'); echo $existe; // true $tmp = ['Primero' => 11, 'Segundo' => 22, 'Último' => 99]; $existe = HelperArray::existsKey($tmp, 'último'); echo $existe; // true
