Tutorials, PHP & MySQL

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';
}