Jak sprawdzić wiele wartości, takich jak:
$arg = array('foo','bar');
if(in_array('foo','bar',$arg))
To przykład, więc rozumiesz trochę lepiej, wiem, że to nie zadziała.
Przecinaj cele ze stogiem siana i upewnij się, że przecięcie jest dokładnie równe celom:
$haystack = array(...);
$target = array('foo', 'bar');
if(count(array_intersect($haystack, $target)) == count($target)){
// all of $target is in $haystack
}
Zwróć uwagę, że wystarczy zweryfikować, że wynikowe przecięcie ma taki sam rozmiar, jak tablica wartości docelowych, aby powiedzieć, że $haystack
jest to nadzbiór $target
.
Aby sprawdzić, czy co najmniej jedna wartość w $target
jest również w $haystack
, możesz wykonać następujące sprawdzenie:
if(count(array_intersect($haystack, $target)) > 0){
// at least one of $target is in $haystack
}
Jako programista prawdopodobnie powinieneś zacząć uczyć się operacji na zbiorach (różnica, suma, przecięcie). Możesz sobie wyobrazić swoją tablicę jako jeden „zestaw”, a klucze, których szukasz jako drugi.
Sprawdź, czy istnieją WSZYSTKIE igły
Sprawdź, czy JAKAŚ z igieł istnieje
źródło
źródło
Wychodząc z odpowiedzi @Rok Kralj (najlepsza IMO), aby sprawdzić, czy w stogu siana nie ma igieł, możesz użyć
(bool)
zamiast!!
nich czasami mylące podczas przeglądu kodu.https://glot.io/snippets/f7dhw4kmju
źródło
IMHO Mark Elliot to najlepsze rozwiązanie tego problemu. Jeśli chcesz wykonać bardziej złożone operacje porównania między elementami tablicy ORAZ korzystasz z PHP 5.3, możesz również pomyśleć o czymś takim:
Zależy to od zamknięcia; funkcja porównania może stać się znacznie potężniejsza. Powodzenia!
źródło
array_intersect () zwraca tablicę zawierającą wszystkie wartości tablicy tablica1, które są obecne we wszystkich argumentach. Pamiętaj, że klucze są zachowane.
Zwraca tablicę zawierającą wszystkie wartości z tablicy tablica1, których wartości znajdują się we wszystkich parametrach.
empty () - Określa, czy zmienna jest pusta
Zwraca FALSE, jeśli zmienna istnieje i ma niepustą, niezerową wartość. W przeciwnym razie zwraca TRUE.
źródło