Tutorials, PHP & MySQL

comparing multiple values against in_array

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

 

David Carr

David Carr

For the past 12 years, I’ve been developing applications for the web using mostly PHP. I do this for a living and love what I do as every day there is something new and exciting to learn.

In my spare time, the web development community is a big part of my life. Whether managing online programming groups and blogs or attending a conference, I find keeping involved helps me stay up to date. This is also my chance to give back to the community that helped me get started, a place I am proud to be apart of.

Besides programming I love spending time with friends and family and can often be found together going out catching the latest movie, staying in playing games on the sofa or planning a trip to someplace I’ve never been before.