Язык программирования PHP | страница 61




Например, имеется массив не изученных нами языков программирования. Мы хотим узнать, содержится ли в этом массиве язык PHP. Напишем следующую программу:


>

>$langs = array("Lisp","Python","Java",

> "PHP","Perl");

>if (in_array("PHP",$langs))

> echo "Надо бы изучить PHP
";

>// выведет сообщение "Надо бы изучить PHP"

>if (in_array("php",$langs))

> echo "Надо бы изучить php
";

>// ничего не выведет, поскольку в массиве

>// есть строка "PHP", а не "php"

>?>



В качестве искомого значения этой функции может выступать и массив. Правда, это свойство было добавлено только начиная с PHP 4.2.0.


Например:


>

>$langs = array("Lisp","Python",array("PHP","Java"),"Perl");

>if (in_array(array("PHP","Java"),$langs))

> echo "Надо бы изучить PHP и Java
";

>?>



Функция array_search


Это еще одна функция для поиска значения в массиве. В отличие от in_array в результате работы array_search возвращает значение ключа, если элемент найден, и ложь – в противном случае. А вот синтаксис у этих функций одинаковый:


>array_search("искомое значение","массив",

> ["ограничение на тип"]);


Сравнение строк чувствительно к регистру, а если указан опциональный аргумент, то сравниваются еще и типы значений. До PHP 4.2.0, если искомое значение не было найдено, эта функция возвращала ошибку или пустое значение NULL.


Пример 7.4. Теперь, наоборот, пусть у нас есть массив языков программирования, которые мы знаем. Причем ключом каждого элемента является номер, указывающий, каким по счету был изучен этот язык.


>

>$langs = array("Lisp","Python","Java",

> "PHP","Perl");

>if (!array_search("PHP",$langs))

> echo "Надо бы изучить PHP
";

>else {

> $k = array_search("PHP",$langs);

> echo "PHP я изучила $k – м";

>}

>?>



В результате мы получим строчку:


>PHP я изучила 3 – м


Очевидно, что эта функция более функциональна, чем in_array, поскольку мы не только получаем информацию о том, что искомый элемент в массиве есть, но и узнаем, где именно в массиве он находится. А что будет, если искомых элементов в массиве несколько? В таком случае функция array_search() вернет ключ первого из найденных элементов. Чтобы получить ключи всех элементов, нужно воспользоваться функцией array_keys().


Функция array_keys


Функция array_keys() выбирает все ключи массива. Но у нее имеется дополнительный аргумент, с помощью которого можно получить список ключей элементов с конкретным значением. Синтаксис этой функции таков:


>array_keys ("массив"