2013-04-08 11 views
6

Mam tablicę, która jest generowana z dowolnym od 3 do 12 wartości, generuje tablicę z informacji o koncie;PHP jeśli in_array dla wielu wartości

$result = $ad->user()->groups($user['username']); 

Chcę sprawdzić tę tablicę dla wielu wartości (około 4 lub 5) i jeśli któryś z nich jest w nim to, co jest w środku, jeśli mogę to zrobić za jedną wartością dość łatwo poprzez:

if (in_array("abc",$result)) { $this->login_session($user); } 

Czy istnieje prosty sposób aby sprawdzić ten jeden układ dla wielu wartości w to inne niż kolejnych regionów najbardziej oddalonych:

if (in_array("abc",$result) || in_array("123",$result) || in_array("def",$result) || in_array("456",$result)) { 
    $this->login_session($user); 
    } 
+0

Możesz przekazać tablicę jako wartość wyszukiwania. – Voitcus

+4

@all jeśli przekazujesz 'in_array' tablicę jako igłę, która zwraca tylko wartość true, jeśli tablica igieł jest dokładnie dopasowana do tablicy w stogu siana. Więc rzucenie kością może być trochę mylące? [zobacz przypadek testowy] (http://codepad.org/fLKLfd0K) – Emissary

+1

Dziękuję, Emisariusz, miałem dokładnie ten problem ze wszystkimi odpowiedziami/komentarzami. Potrzebuję tego, aby była prawdziwa, jeśli DOWOLNE wartości są w tablicy, sugestie działają tylko tak, jak powiedziałeś, jeśli są dokładnie dopasowane. – toups

Odpowiedz

16

spróbować i zobaczyć, czy jest to pomocne:

if(array_intersect($result, array('abc', '123', 'def'))) { 
    $this->login_session($user); 
} 
+0

Brakujący) przed {ale poza tym, że to zadziałało dla mnie, dzięki! – toups

2

To powinno być to, czego szukasz:

$a = array(1,2,3,4,5); 

$b = array(6,8); 

function is_in_array($needle, $haystack) { 

    foreach ($needle as $stack) { 

     if (in_array($stack, $haystack)) { 
      return true; 
     } 
    } 

    return false; 
} 

var_dump(is_in_array($b, $a)); 

Zasadniczo pętle przez igłę i biegnie in tablicy go na stogu siana. zwraca true, gdy coś zostanie znalezione, w przeciwnym razie zwraca false.

Powiązane problemy