- PHP in_array() Function
- Definition and Usage
- Syntax
- Parameter Values
- Technical Details
- More Examples
- Example
- COLOR PICKER
- Report Error
- Thank You For Helping Us!
- array_search
- Возвращаемые значения
- Список изменений
- Примеры
- Смотрите также
- in_array
- Список параметров
- Возвращаемые значения
- Примеры
- Смотрите также
- User Contributed Notes 8 notes
PHP in_array() Function
Search for the value «Glenn» in an array and output some text:
$people = array(«Peter», «Joe», «Glenn», «Cleveland»);
?php
if (in_array(«Glenn», $people))
echo «Match found»;
>
else
echo «Match not found»;
>
?>
Definition and Usage
The in_array() function searches an array for a specific value.
Note: If the search parameter is a string and the type parameter is set to TRUE, the search is case-sensitive.
Syntax
Parameter Values
Parameter | Description |
---|---|
search | Required. Specifies the what to search for |
array | Required. Specifies the array to search |
type | Optional. If this parameter is set to TRUE, the in_array() function searches for the search-string and specific type in the array. |
Technical Details
Return Value: | Returns TRUE if the value is found in the array, or FALSE otherwise |
---|---|
PHP Version: | 4+ |
PHP Changelog: | PHP 4.2: The search parameter may now be an array |
More Examples
Example
$people = array(«Peter», «Joe», «Glenn», «Cleveland», 23);
?php
if (in_array(«23», $people, TRUE))
echo «Match found
«;
>
else
echo «Match not found
«;
>
if (in_array(«Glenn»,$people, TRUE))
echo «Match found
«;
>
else
echo «Match not found
«;
>
if (in_array(23,$people, TRUE))
echo «Match found
«;
>
else
echo «Match not found
«;
>
?>
COLOR PICKER
Report Error
If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:
Thank You For Helping Us!
Your message has been sent to W3Schools.
Top Tutorials
Top References
Top Examples
Get Certified
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.
array_search
Замечание:
Если needle является строкой, сравнение происходит с учетом регистра.
Если третий параметр strict установлен в TRUE , то функция array_search() будет искать идентичные элементы в haystack . Это означает, что также будут проверяться типы needle в haystack , а объекты должны быть одни и тем же экземпляром.
Возвращаемые значения
Возвращает ключ для needle , если он был найден в массиве, иначе FALSE .
Если needle присутствует в haystack более одного раза, будет возвращён первый найденный ключ. Для того, чтобы возвратить ключи для всех найденных значений, используйте функцию array_keys() с необязательным параметром search_value .
Эта функция может возвращать как boolean FALSE , так и не-boolean значение, которое приводится к FALSE . За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
Список изменений
Версия | Описание |
---|---|
5.3.0 | Вместе со всеми внутренними функциями PHP начиная с 5.3.0, array_search() возвращает NULL , если ей были переданы неверные параметры. |
4.2.0 | До PHP 4.2.0, array_search() при неудаче возвращал NULL вместо FALSE . |
Примеры
Пример #1 Пример использования array_search()
$array = array( 0 => ‘blue’ , 1 => ‘red’ , 2 => ‘green’ , 3 => ‘red’ );
?php
$key = array_search ( ‘green’ , $array ); // $key = 2;
$key = array_search ( ‘red’ , $array ); // $key = 1;
?>
Смотрите также
- array_keys() — Возвращает все или некоторое подмножество ключей массива
- array_values() — Выбирает все значения массива
- array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс
- in_array() — Проверяет, присутствует ли в массиве значение
in_array
Ищет в haystack значение needle . Если strict не установлен, то при поиске будет использовано нестрогое сравнение.
Список параметров
Замечание:
Если needle — строка, сравнение будет произведено с учётом регистра.
Если третий параметр strict установлен в true , тогда функция in_array() также проверит соответствие типов параметра needle и соответствующего значения массива haystack .
Замечание:
До PHP 8.0.0 строковое значение параметра needle будет соответствовать значению массива 0 в нестрогом режиме, и наоборот. Это может привести к нежелательным результатам. Подобные крайние случаи существуют и для других типов. Если нет полной уверенности в типах значений, всегда используйте флаг strict , чтобы избежать неожиданного поведения.
Возвращаемые значения
Возвращает true , если needle был найден в массиве, и false в противном случае.
Примеры
Пример #1 Пример использования in_array()
$os = array( «Mac» , «NT» , «Irix» , «Linux» );
if ( in_array ( «Irix» , $os )) echo «Нашёл Irix» ;
>
if ( in_array ( «mac» , $os )) echo «Нашёл mac» ;
>
?>?php
Второго совпадения не будет, потому что in_array() регистрозависима, таким образом, программа выведет:
Пример #2 Пример использования in_array() с параметром strict
if ( in_array ( ‘12.4’ , $a , true )) echo «‘12.4’ найдено со строгой проверкой\n» ;
>
if ( in_array ( 1.13 , $a , true )) echo «1.13 найдено со строгой проверкой\n» ;
>
?>
Результат выполнения данного примера:
1.13 найдено со строгой проверкой
Пример #3 Пример использования in_array() с массивом в качестве параметра needle
if ( in_array (array( ‘p’ , ‘h’ ), $a )) echo «‘ph’ найдено\n» ;
>
if ( in_array (array( ‘f’ , ‘i’ ), $a )) echo «‘fi’ найдено\n» ;
>
if ( in_array ( ‘o’ , $a )) echo «‘o’ найдено\n» ;
>
?>
Результат выполнения данного примера:
Смотрите также
- array_search() — Осуществляет поиск данного значения в массиве и возвращает ключ первого найденного элемента в случае успешного выполнения
- isset() — Определяет, была ли установлена переменная значением, отличным от null
- array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс
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!’ );