- array_search
- Возвращаемые значения
- Список изменений
- Примеры
- Смотрите также
- PHP Array Search: A Comprehensive Guide
- Syntax of PHP Array Search
- How to use PHP Array Search
- Strict Search in PHP Array Search
- Real-World Examples of PHP Array Search
- Conclusion
- array_search
- Возвращаемые значения
- Примеры
- Смотрите также
- User Contributed Notes 16 notes
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() — Проверяет, присутствует ли в массиве значение
PHP Array Search: A Comprehensive Guide
PHP Array Search is a powerful function that allows you to find the position of a specific value in an array. It is a vital tool for PHP developers and is widely used in various applications and scripts. The array_search() function is a built-in function in PHP and is part of the PHP Core Library. In this article, we will be discussing the PHP Array Search function in detail, including its syntax, examples, and how to use it effectively in your PHP scripts.
Syntax of PHP Array Search
The syntax for the PHP Array Search function is quite simple and straightforward. Here is the basic syntax for the function:
array_search(value, array, strict)
- value is the value that you want to search for in the array.
- array is the array in which you want to search for the value.
- strict is an optional parameter that specifies whether to search for identical elements in the array or not. By default, the strict parameter is set to false . If you set it to true , then the function will only return the position of the value if the values are identical in type and value.
How to use PHP Array Search
Now that we have a basic understanding of the syntax of the PHP Array Search function, let’s look at how to use it in your PHP scripts.
Here is a simple example that demonstrates how to use the PHP Array Search function:
$array = array(1, 2, 3, 4, 5); $value = 3; $result = array_search($value, $array); echo "Value was found at position: $result"; ?>
In this example, we have created an array called $array that contains five elements. We then set the value that we want to search for in the array to 3 . The array_search() function is then used to search for the value in the array, and the result is stored in the $result variable. Finally, we use the echo statement to output the position of the value in the array.
Strict Search in PHP Array Search
In the previous example, we used the PHP Array Search function without the strict parameter. This means that the function will return the position of the value in the array regardless of the type of the value. However, if you want to search for identical elements in the array, you can use the strict parameter.
Here is an example that demonstrates how to use the strict parameter in the PHP Array Search function:
$array = array(1, 2, "3", 4, 5); $value = 3; $result = array_search($value, $array, true); if ($result === false) < echo "Value was not found in the array"; > else < echo "Value was found at position: $result"; > ?>
In this example, we have created an array called $array that contains five elements, including a string value «3» . We then set the value that we want to search for in the array to 3 . The array_search() function is then used to search for the value in the array, with the strict parameter set to true . The result is stored in the $result variable. Finally, we use an if statement to check if the value was found in the array or not. If the value was found, the position is outputted. If the value was not found, a message indicating that the value was not found in the array is displayed.
Real-World Examples of PHP Array Search
The PHP Array Search function can be used in a variety of real-world applications. Here are a few examples of how you can use it in your PHP scripts:
- Searching for a specific value in an array of user data to display the information on a user profile page.
- Searching for a specific value in an array of products to display the details of the product on a product page.
- Searching for a specific value in an array of categories to determine which category a product belongs to.
Conclusion
In conclusion, the PHP Array Search function is a powerful and essential tool for PHP developers. It allows you to easily search for a specific value in an array and determine its position. By understanding the syntax and usage of the PHP Array Search function, you can effectively use it in your PHP scripts and improve the functionality of your applications.
array_search
Замечание:
Если needle является строкой, сравнение происходит с учётом регистра.
Если третий параметр strict установлен в true , то функция array_search() будет искать идентичные элементы в haystack . Это означает, что также будут проверяться типы needle в haystack , а объекты должны быть одним и тем же экземпляром.
Возвращаемые значения
Возвращает ключ для needle , если он был найден в массиве, иначе false .
Если needle присутствует в haystack более одного раза, будет возвращён первый найденный ключ. Для того, чтобы возвратить ключи для всех найденных значений, используйте функцию array_keys() с необязательным параметром search_value .
Эта функция может возвращать как логическое значение false , так и значение не типа boolean, которое приводится к 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() — Проверяет, присутствует ли в массиве значение
User Contributed Notes 16 notes
About searcing in multi-dimentional arrays; two notes on «xfoxawy at gmail dot com»;
It perfectly searches through multi-dimentional arrays combined with array_column() (min php 5.5.0) but it may not return the values you’d expect.
Since array_column() will produce a resulting array; it won’t preserve your multi-dimentional array’s keys. So if you check against your keys, it will fail.
$people = array(
2 => array(
‘name’ => ‘John’ ,
‘fav_color’ => ‘green’
),
5 => array(
‘name’ => ‘Samuel’ ,
‘fav_color’ => ‘blue’
)
);
$found_key = array_search ( ‘blue’ , array_column ( $people , ‘fav_color’ ));
?>
Here, you could expect that the $found_key would be «5» but it’s NOT. It will be 1. Since it’s the second element of the produced array by the array_column() function.
Secondly, if your array is big, I would recommend you to first assign a new variable so that it wouldn’t call array_column() for each element it searches. For a better performance, you could do;
$colors = array_column ( $people , ‘fav_color’ );
$found_key = array_search ( ‘blue’ , $colors );
?>
If you are using the result of array_search in a condition statement, make sure you use the === operator instead of == to test whether or not it found a match. Otherwise, searching through an array with numeric indicies will result in index 0 always getting evaluated as false/null. This nuance cost me a lot of time and sanity, so I hope this helps someone. In case you don’t know what I’m talking about, here’s an example:
$code = array( «a» , «b» , «a» , «c» , «a» , «b» , «b» ); // infamous abacabb mortal kombat code 😛
// this is WRONG
while (( $key = array_search ( «a» , $code )) != NULL )
<
// infinite loop, regardless of the unset
unset( $code [ $key ]);
>
// this is _RIGHT_
while (( $key = array_search ( «a» , $code )) !== NULL )
<
// loop will terminate
unset( $code [ $key ]);
>
?>
for searching case insensitive better this:
array_search ( strtolower ( $element ), array_map ( ‘strtolower’ , $array ));
?>
var_dump ( array_search ( ‘needle’ , [ 0 => 0 ])); // int(0) (!)
var_dump ( array_search ( ‘needle’ , [ 0 => 0 ], true )); // bool(false)
var_dump ( array_search ( ‘needle’ , [ 0 => 0 ])); // bool(false)
To expand on previous comments, here are some examples of
where using array_search within an IF statement can go
wrong when you want to use the array key thats returned.
Take the following two arrays you wish to search:
$fruit_array = array( «apple» , «pear» , «orange» );
$fruit_array = array( «a» => «apple» , «b» => «pear» , «c» => «orange» );
if ( $i = array_search ( «apple» , $fruit_array ))
//PROBLEM: the first array returns a key of 0 and IF treats it as FALSE
if ( is_numeric ( $i = array_search ( «apple» , $fruit_array )))
//PROBLEM: works on numeric keys of the first array but fails on the second
if ( $i = is_numeric ( array_search ( «apple» , $fruit_array )))
//PROBLEM: using the above in the wrong order causes $i to always equal 1
if ( $i = array_search ( «apple» , $fruit_array ) !== FALSE )
//PROBLEM: explicit with no extra brackets causes $i to always equal 1
if (( $i = array_search ( «apple» , $fruit_array )) !== FALSE )
//YES: works on both arrays returning their keys
?>
Despite PHP’s amazing assortment of array functions and juggling maneuvers, I found myself needing a way to get the FULL array key mapping to a specific value. This function does that, and returns an array of the appropriate keys to get to said (first) value occurrence.
function array_recursive_search_key_map($needle, $haystack) foreach($haystack as $first_level_key=>$value) if ($needle === $value) return array($first_level_key);
> elseif (is_array($value)) $callback = array_recursive_search_key_map($needle, $value);
if ($callback) return array_merge(array($first_level_key), $callback);
>
>
>
return false;
>
$nested_array = $sample_array = array(
‘a’ => array(
‘one’ => array (‘aaa’ => ‘apple’, ‘bbb’ => ‘berry’, ‘ccc’ => ‘cantalope’),
‘two’ => array (‘ddd’ => ‘dog’, ‘eee’ => ‘elephant’, ‘fff’ => ‘fox’)
),
‘b’ => array(
‘three’ => array (‘ggg’ => ‘glad’, ‘hhh’ => ‘happy’, ‘iii’ => ‘insane’),
‘four’ => array (‘jjj’ => ‘jim’, ‘kkk’ => ‘kim’, ‘lll’ => ‘liam’)
),
‘c’ => array(
‘five’ => array (‘mmm’ => ‘mow’, ‘nnn’ => ‘no’, ‘ooo’ => ‘ohh’),
‘six’ => array (‘ppp’ => ‘pidgeon’, ‘qqq’ => ‘quail’, ‘rrr’ => ‘rooster’)
)
);
$array_keymap = array_recursive_search_key_map($search_value, $nested_array);
But again, with the above solution, PHP again falls short on how to dynamically access a specific element’s value within the nested array. For that, I wrote a 2nd function to pull the value that was mapped above.
function array_get_nested_value($keymap, $array)
$nest_depth = sizeof($keymap);
$value = $array;
for ($i = 0; $i < $nest_depth; $i++) $value = $value[$keymap[$i]];
>
usage example:
——————-
echo array_get_nested_value($array_keymap, $nested_array); // insane