Como faço para verificar vários valores, como:
$arg = array('foo','bar');
if(in_array('foo','bar',$arg))
Esse é um exemplo para você entender um pouco melhor, sei que não vai funcionar.
Cruze os alvos com o palheiro e certifique-se de que a intersecção seja exatamente igual aos alvos:
$haystack = array(...);
$target = array('foo', 'bar');
if(count(array_intersect($haystack, $target)) == count($target)){
// all of $target is in $haystack
}
Observe que você só precisa verificar se o tamanho da interseção resultante é do mesmo tamanho da matriz de valores de destino para dizer que $haystack
é um superconjunto de $target
.
Para verificar se pelo menos um valor em $target
também está in $haystack
, você pode fazer esta verificação:
if(count(array_intersect($haystack, $target)) > 0){
// at least one of $target is in $haystack
}
Como desenvolvedor, você provavelmente deve começar a aprender operações de conjunto (diferença, união, interseção). Você pode imaginar seu array como um "conjunto" e as chaves que você está procurando como o outro.
Verifique se existem TODAS as agulhas
Verifique se existe ALGUMA das agulhas
fonte
fonte
Saindo de resposta @Rok Kralj (melhor IMO) para verificar se alguma das agulhas existem no palheiro, você pode usar
(bool)
em vez de!!
que às vezes pode ser confuso durante a revisão do código.https://glot.io/snippets/f7dhw4kmju
fonte
A melhor solução de IMHO Mark Elliot para este problema. Se você precisa fazer operações de comparação mais complexas entre os elementos da matriz E está no PHP 5.3, também pode pensar em algo como o seguinte:
Isso depende de um fechamento; função de comparação pode se tornar muito mais poderosa. Boa sorte!
fonte
array_intersect () retorna um array contendo todos os valores de array1 que estão presentes em todos os argumentos. Observe que as chaves são preservadas.
Retorna uma matriz contendo todos os valores em array1, cujos valores existem em todos os parâmetros.
empty () - Determina se uma variável está vazia
Retorna FALSE se var existe e tem um valor não vazio, diferente de zero. Caso contrário, retorna TRUE.
fonte