- Check if an Array contains a value in PHP
- Method 1: Using in_array() function
- Frequently Asked:
- Method 2: Using array_search() function
- Summary
- Related posts:
- Share your love
- Leave a Comment Cancel Reply
- Terms of Use
- Disclaimer
- in_array
- Parameters
- Return Values
- Examples
- See Also
- User Contributed Notes 8 notes
- PHP in_array
- Introduction to the PHP in_array() function
- PHP in_array() function examples
- 1) Simple PHP in_array() function examples
- 2) Using PHP in_array() function with the strict comparison example
- 3) Using PHP in_array() function with the searched value is an array example
- 4) Using PHP in_array() function with an array of objects example
- Summary
Check if an Array contains a value in PHP
This tutorial will discuss about unique ways to check if an array contains a value in php.
Table Of Contents
Method 1: Using in_array() function
The in_array() function in PHP, accepts a value and an array as arguments, and returns true , if the value exists in the array. So, we can use this to check if an array contains a value or not in PHP.
Let’s see the complete example,
Frequently Asked:
Yes, Value exists in the array
As the value exists in the array, therefore it returned the boolean value true.
Method 2: Using array_search() function
The array_search() function in PHP, accepts a value and an array as arguments, and returns the key/index of first occurrence of given value in array . If the value does not exists in the array, then it returns false . So, we can use this to check if an array contains a value or not in PHP.
Let’s see the complete example,
Yes, Value exists in the array
As the value exists in the array, therefore it didn’t returned the boolean value false.
Summary
We learned about two different ways to check if a value exists in an array in PHP.
Related posts:
Share your love
Leave a Comment Cancel Reply
This site uses Akismet to reduce spam. Learn how your comment data is processed.
Terms of Use
Disclaimer
Copyright © 2023 thisPointer
To provide the best experiences, we and our partners use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us and our partners to process personal data such as browsing behavior or unique IDs on this site and show (non-) personalized ads. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Click below to consent to the above or make granular choices. Your choices will be applied to this site only. You can change your settings at any time, including withdrawing your consent, by using the toggles on the Cookie Policy, or by clicking on the manage consent button at the bottom of the screen.
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
in_array
Searches for needle in haystack using loose comparison unless strict is set.
Parameters
Note:
If needle is a string, the comparison is done in a case-sensitive manner.
If the third parameter strict is set to true then the in_array() function will also check the types of the needle in the haystack .
Note:
Prior to PHP 8.0.0, a string needle will match an array value of 0 in non-strict mode, and vice versa. That may lead to undesireable results. Similar edge cases exist for other types, as well. If not absolutely certain of the types of values involved, always use the strict flag to avoid unexpected behavior.
Return Values
Returns true if needle is found in the array, false otherwise.
Examples
Example #1 in_array() example
$os = array( «Mac» , «NT» , «Irix» , «Linux» );
if ( in_array ( «Irix» , $os )) echo «Got Irix» ;
>
if ( in_array ( «mac» , $os )) echo «Got mac» ;
>
?>?php
The second condition fails because in_array() is case-sensitive, so the program above will display:
Example #2 in_array() with strict example
if ( in_array ( ‘12.4’ , $a , true )) echo «‘12.4’ found with strict check\n» ;
>
if ( in_array ( 1.13 , $a , true )) echo «1.13 found with strict check\n» ;
>
?>
The above example will output:
1.13 found with strict check
Example #3 in_array() with an array as needle
if ( in_array (array( ‘p’ , ‘h’ ), $a )) echo «‘ph’ was found\n» ;
>
if ( in_array (array( ‘f’ , ‘i’ ), $a )) echo «‘fi’ was found\n» ;
>
if ( in_array ( ‘o’ , $a )) echo «‘o’ was found\n» ;
>
?>
The above example will output:
See Also
- array_search() — Searches the array for a given value and returns the first corresponding key if successful
- isset() — Determine if a variable is declared and is different than null
- array_key_exists() — Checks if the given key or index exists in the array
User Contributed Notes 8 notes
Loose checking returns some crazy, counter-intuitive results when used with certain arrays. It is completely correct behaviour, due to PHP’s leniency on variable types, but in «real-life» is almost useless.
The solution is to use the strict checking option.
$array = array(
‘egg’ => true ,
‘cheese’ => false ,
‘hair’ => 765 ,
‘goblins’ => null ,
‘ogres’ => ‘no ogres allowed in this array’
);
// Loose checking — return values are in comments
// First three make sense, last four do not
in_array ( null , $array ); // true
in_array ( false , $array ); // true
in_array ( 765 , $array ); // true
in_array ( 763 , $array ); // true
in_array ( ‘egg’ , $array ); // true
in_array ( ‘hhh’ , $array ); // true
in_array (array(), $array ); // true
in_array ( null , $array , true ); // true
in_array ( false , $array , true ); // true
in_array ( 765 , $array , true ); // true
in_array ( 763 , $array , true ); // false
in_array ( ‘egg’ , $array , true ); // false
in_array ( ‘hhh’ , $array , true ); // false
in_array (array(), $array , true ); // false
I got an unexpected behavior working with in_array. I’m using following code:
// .
$someId = getSomeId (); // it gets generated/fetched by another service, so I don’t know what value it will have. P.S.: it’s an integer
// The actual data in my edge-case scenario:
// $someId = 0;
// $anyArray = [‘dataOne’, ‘dataTwo’];
if ( in_array ( $someId , $anyArray )) // do some work
>
// .
?>
With PHP7.4, in_array returns boolean true.
With PHP8.1, in_array returns boolean false.
It took me quite some time to find out what’s going on.
I found out that in_array will *not* find an associative array within a haystack of associative arrays in strict mode if the keys were not generated in the *same order*:
$needle = array(
‘fruit’ => ‘banana’ , ‘vegetable’ => ‘carrot’
);
$haystack = array(
array( ‘vegetable’ => ‘carrot’ , ‘fruit’ => ‘banana’ ),
array( ‘fruit’ => ‘apple’ , ‘vegetable’ => ‘celery’ )
);
echo in_array ( $needle , $haystack , true ) ? ‘true’ : ‘false’ ;
// Output is ‘false’
echo in_array ( $needle , $haystack ) ? ‘true’ : ‘false’ ;
// Output is ‘true’
?>
I had wrongly assumed the order of the items in an associative array were irrelevant, regardless of whether ‘strict’ is TRUE or FALSE: The order is irrelevant *only* if not in strict mode.
I’d like to point out that, if you’re using Enum data structures and want to compare whether an array of strings has a certain string Enum in it, you need to cast it to a string.
From what I’ve tested, the function works correctly:
if the array is filled with strings and you’re searching for a string;
if the array is filled with Enums and you’re searching for an Enum.
Here is a recursive in_array function:
$myNumbers = [
[ 1 , 2 , 3 , 4 , 5 ],
[ 6 , 7 , 8 , 9 , 10 ],
];
$array = [
‘numbers’ => $myNumbers
];
// Let’s try to find number 7 within $array
$hasNumber = in_array ( 7 , $array , true ); // bool(false)
$hasNumber = in_array_recursive ( 7 , $array , true ); // bool(true)
function in_array_recursive ( mixed $needle , array $haystack , bool $strict ): bool
foreach ( $haystack as $element ) if ( $element === $needle ) return true ;
>
$isFound = false ;
if ( is_array ( $element )) $isFound = in_array_recursive ( $needle , $element , $strict );
>
if ( $isFound === true ) return true ;
>
>
If you’re creating an array yourself and then using in_array to search it, consider setting the keys of the array and using isset instead since it’s much faster.
$slow = array( ‘apple’ , ‘banana’ , ‘orange’ );
if ( in_array ( ‘banana’ , $slow ))
print( ‘Found it!’ );
$fast = array( ‘apple’ => ‘apple’ , ‘banana’ => ‘banana’ , ‘orange’ => ‘orange’ );
if (isset( $fast [ ‘banana’ ]))
print( ‘Found it!’ );
PHP in_array
Summary: in this tutorial, you will learn how to use the PHP in_array() function to check if a value exists in an array.
Introduction to the PHP in_array() function
The in_array() function returns true if a value exists in an array. Here’s the syntax of the in_array() function:
in_array ( mixed $needle , array $haystack , bool $strict = false ) : bool
Code language: PHP (php)
- $needle is the searched value.
- $haystack is the array to search.
- $strict if the $strict sets to true , the in_array() function will use the strict comparison.
The in_array() function searches for the $needle in the $haystack using the loose comparison ( == ). To use the strict comparison ( === ), you need to set the $strict argument to true .
If the value to check is a string, the in_array() function will search for it case-sensitively.
The in_array() function returns true if the $needle exists in the $array ; otherwise, it returns false .
PHP in_array() function examples
Let’s take some examples of using the in_array() function.
1) Simple PHP in_array() function examples
The following example uses the in_array() function to check if the value ‘update’ is in the $actions array:
$actions = [ 'new', 'edit', 'update', 'view', 'delete', ]; $result = in_array('update', $actions); var_dump($result); // bool(true)
Code language: HTML, XML (xml)
The following example returns false because the publish value doesn’t exist in the $actions array:
$actions = [ 'new', 'edit', 'update', 'view', 'delete', ]; $result = in_array('publish', $actions); var_dump($result); // bool(false)
Code language: HTML, XML (xml)
The following example returns false because the value ‘New’ doesn’t exist in the $actions array. Note that the in_array() compares the strings case-sensitively:
$actions = [ 'new', 'edit', 'update', 'view', 'delete', ]; $result = in_array('New', $actions); var_dump($result); // bool(false)
Code language: HTML, XML (xml)
2) Using PHP in_array() function with the strict comparison example
The following example uses the in_array() function to find the number 15 in the $user_ids array. It returns true because the in_array() function compares the values using the loose comparison ( == ):
$user_ids = [10, '15', '20', 30]; $result = in_array(15, $user_ids); var_dump($result); // bool(true)
Code language: HTML, XML (xml)
To use the strict comparison, you pass false to the third argument ( $strict ) of the in_array() function as follows:
$user_ids = [10, '15', '20', 30]; $result = in_array(15, $user_ids, true); var_dump($result); // bool(false)
Code language: HTML, XML (xml)
This time the in_array() function returns false instead.
3) Using PHP in_array() function with the searched value is an array example
The following example uses the in_array() function with the searched value is an array:
$colors = [ ['red', 'green', 'blue'], ['cyan', 'magenta', 'yellow', 'black'], ['hue', 'saturation', 'lightness'] ]; if (in_array(['red', 'green', 'blue'], $colors)) < echo 'RGB colors found'; > else < echo 'RGB colors are not found'; >
Code language: HTML, XML (xml)
4) Using PHP in_array() function with an array of objects example
The following defines the Role class that has two properties $id and $name :
class Role < private $id; private $name; public function __construct($id, $name) < $this->id = $id; $this->name = $name; > >
Code language: HTML, XML (xml)
This example illustrates how to use the in_array() function to check if a Role object exists in an array of Role objects:
// Role class $roles = [ new Role(1, 'admin'), new Role(2, 'editor'), new Role(3, 'subscribe'), ]; if (in_array(new Role(1, 'admin'), $roles)) < echo 'found it'; >
Code language: HTML, XML (xml)
If you set the $strict to true , the in_array() function will compare objects using their identities instead of values. For example:
// Role class $roles = [ new Role(1, 'admin'), new Role(2, 'editor'), new Role(3, 'subscribe'), ]; if (in_array(new Role(1, 'admin'), $roles, true)) < echo 'found it!'; > else < echo 'not found!'; >
Code language: PHP (php)