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
