PHP's in_array is useful to determine if an item is in an array but when needing to compare multiple values against in_array no results will be found.
A way round this is to loop through the values and compare each one in turn, this function is pefect that that task:
function isInArray($needle, $haystack)
{
foreach ($needle as $stack) {
if (in_array($stack, $haystack)) {
return true;
}
}
return false;
}
This function expects 2 arrays to be passed, it will then loop through the keys and compare them. If no matches are found false is returned.
A quick demo
Here are two arrays, the exclude array is a list of people to exclude.
$people = array(
'Dave',
'Emma',
'Terry',
'Cath'
);
$exclude = array(
'emma'
);
Using array_map we can make all items lowercase so case sensativity does not get in the way.
$people = array_map('strtolower', $people);
$exclude = array_map('strtolower', $exclude);
Check if any person from the excludes array is in the people array.
if(isInArray($exclude, $people) == true){
echo 'people from excludes are in the array $people';
} else {
echo 'no exclusions';
}
Putting it together
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';
}