Post Top Ad

Your Ad Spot

viernes, 15 de mayo de 2020

comparando valores múltiples contra in_array

PHP in_array es útil para determinar si un elemento está en una matriz, pero cuando se necesita comparar varios valores con in_array, no se encontrarán resultados.
Una forma de evitar esto es recorrer los valores y comparar cada uno a su vez, esta función es perfecta para esa tarea:
function isInArray($needle, $haystack) 
{
    foreach ($needle as $stack) {
        if (in_array($stack, $haystack)) {
         return true;
        }
    }
    return false;
}
Esta función espera que se pasen 2 matrices, luego recorrerá las teclas y las comparará. Si no se encuentran coincidencias, se devuelve falso.

Una demostración rápida

Aquí hay dos matrices, la matriz de exclusión es una lista de personas para excluir.
$people = array(
 'Dave', 
 'Emma', 
 'Terry', 
 'Cath'
);

$exclude = array(
 'emma'
);
Usando array_map podemos poner todos los elementos en minúsculas para que la sensibilidad de mayúsculas y minúsculas no se interponga en el camino.
$people = array_map('strtolower', $people);
$exclude = array_map('strtolower', $exclude);
Compruebe si alguna persona del conjunto de exclusión está en el conjunto de personas.
if(isInArray($exclude, $people) == true){
 echo 'people from excludes are in the array $people';
} else {
 echo 'no exclusions';
}

Poniendo todo junto

function isInArray($needle, $haystack) 
{
    foreach ($needle as $stack) {
        if (in_array($stack, $haystack)) {
         return true;
        }
    }
    return false;
}

$people = array(
 'Dave', 
 'Emma', 
 'Terry', 
 'Cath'
);

$exclude = array(
 'emma'
);

$people = array_map('strtolower', $people);
$exclude = array_map('strtolower', $exclude);

if(isInArray($exclude, $people) == true){
 echo 'people from excludes are in the array $people';
} else {
 echo 'no exclusions';
}

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas