PHP – Array – array_map, array_search, value
Función que nos indica si un array tiene un determinado valor, 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 un valor existe en un array. * Se comprueba que al parámetro sea un array. * Es independiente de maýusculas y minúsculas pero no acentuadas * * @param array $arr * @param mixed $value * * @return bool * @see strLower */ public static function existsValue($arr, $value) { // Si no es un array, devolvemos false (No existe) if (!is_array($arr)) { return false; } $value = HelperString::toLower($value); // Como la función 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) { return HelperString::toLower($val); }, $arr); return !(false === array_search($value, $array_copy)); } }
Funciones relacionadas
- HelperString::toLower : Convertir un texto a minúsculas con acentos
Ejemplos
$tmp = []; $existe = HelperArray::existsValue($tmp, null); echo $existe; // false $tmp = 'ok'; $existe = HelperArray::existsValue($tmp, null); echo $existe; // false $existe = HelperArray::existsValue($tmp, 0); echo $existe; // false $tmp = [1, 2, 3]; $existe = HelperArray::existsValue($tmp, '2'); echo $existe; // true $tmp = [1, 2, 3, '55' => 'cinco']; $existe = HelperArray::existsValue($tmp, 3); echo $existe; // true $existe = HelperArray::existsValue($tmp, 55); echo $existe; // false $existe = HelperArray::existsValue($tmp, 'cinco'); echo $existe; // true $tmp = ['Primero' => 2, 'Segundo']; $existe = HelperArray::existsValue($tmp, 'SEGUNDO'); echo $existe; // true $tmp = ['Primero', 'Segundo']; $existe = HelperArray::existsValue($tmp, 'Segundo'); echo $existe; // true $tmp = ['Primero' => 11, 'Segundo' => 22]; $existe = HelperArray::existsValue($tmp, 'Segundo'); echo $existe; // false $tmp = ['Primero' => 11, 'Segundo' => 22, 'Último' => 99]; $existe = HelperArray::existsValue($tmp, 'ultimo'); echo $existe; // false $tmp = [11 => 'Primero', 22 => 'Segundo', 99 => 'Último']; $existe = HelperArray::existsValue($tmp, 'ultimo'); echo $existe; // false $tmp = [11 => 'Primero', 22 => 'Segundo', 99 => 'Último']; $existe = HelperArray::existsValue($tmp, 'último'); echo $existe; // true