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