Чтение онлайн

на главную - закладки

Жанры

Курс "Язык программирования PHP"

Савельева Нина Владимировна

Шрифт:

?>

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

Например:

<?php

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

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

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

?>

Функция array_search

Это

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

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

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

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

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

<?php

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

"PHP","Perl");

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

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

else {

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

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

}

?>

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

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

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

Функция array_keys

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

array_keys ("массив"

[,"значение для поиска"])

Функция array_keys возвращает как строковые, так и числовые ключи массива, организуя все значения в виде нового массива с числовыми индексами.

Пример 7.5. Мы записали массив языков, которые изучили. Список был длинным, и некоторые

языки были записаны несколько раз. У нас возникло подозрение, что один из таких языков – Lisp. Давайте это проверим:

<?php

$langs =

array("Lisp","Python","Java","PHP",

"Perl","Lisp");

$lisp_keys = array_keys($langs,"Lisp");

echo "Lisp входит в массив ".

count($lisp_keys) ." раза:<br>";

foreach ($lisp_keys as $val){

echo "под номером $val <br>";

}

?>

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

Lisp входит в массив 2 раза:

под номером 0

под номером 5

Функция array_keys, как и две предыдущие, зависит от регистра, т.е. элементов LISP в массиве она не обнаружит. array_keys появилась только в PHP4. В PHP3 для реализации ее функциональности нужно придумывать свою функцию.

Если есть функция для получения всех ключей массива, то можно предположить, что существует и функция для получения всех значений массива. Действительно, она существует. Это функция array_values(массив). Все значения переданного ей массива записываются в новый массив, проиндексированный целыми числами, т.е. все ключи массива теряются, остаются только значения. Но вернемся к нашему примеру.

Итак, мы выяснили, что язык Lisp случайно упомянут в нашем массиве дважды. Поскольку изучить один язык дважды нельзя («учил, но забыл» не считается), то нужно как-то избавиться от повторяющихся языков. Сделать это довольно просто с помощью функции array_unique.

Функция array_unique

Функция array_unique(массив) удаляет повторяющиеся значения из массива и возвращает новый массив. Таким образом, вместо нескольких одинаковых значений и их ключей мы имеем одно значение. Какой у него будет ключ? Как из нескольких ключей одинаковых элементов выбирается тот, который будет сохранен в новом массиве? Происходит следующее. Все элементы массива преобразуются в строки и сортируются. Затем обработчик запоминает первый ключ для каждого значения, а остальные ключи игнорирует.

Попробуем избавиться от повторяющихся языков в списке изученных.

<?php

$langs =

array("Lisp","Java","Python","Java",

"PHP","Perl","Lisp");

print_r(array_unique($langs));

?>

Получим следующее:

Array ( [0] => Lisp [1] => Java [2]

=> Python [4] => PHP [5] => Perl )

Поделиться:
Популярные книги

Скользкий

Корнев Павел Николаевич
2. Приграничье
Фантастика:
боевая фантастика
8.89
рейтинг книги
Скользкий

Инквизитор и нимфа

Зонис Юлия
Фантастика:
фэнтези
6.00
рейтинг книги
Инквизитор и нимфа

Поезд смерти (Сборник)

Бирн Роберт
Мастера остросюжетного романа
Детективы:
техно триллер
6.25
рейтинг книги
Поезд смерти (Сборник)

Фэнтези-2006

Пехов Алексей Юрьевич
Фантастика:
фэнтези
6.40
рейтинг книги
Фэнтези-2006

Песнь для Арбонны. Последний свет Солнца

Кей Гай Гэвриел
Фантастика:
фэнтези
5.00
рейтинг книги
Песнь для Арбонны. Последний свет Солнца

Соперник

Джойс Бренда
Любовные романы:
исторические любовные романы
8.28
рейтинг книги
Соперник

Огнем и водой

Вересов Дмитрий
2. Ленинградская сага
Проза:
современная проза
5.40
рейтинг книги
Огнем и водой

Лэшер

Райс Энн
5. Мэйфейрские ведьмы
Фантастика:
ужасы и мистика
8.32
рейтинг книги
Лэшер

Древо жизни. Книга 3

Кузьменко Владимир Леонидович
3. Древо жизни
Фантастика:
социально-философская фантастика
7.50
рейтинг книги
Древо жизни. Книга 3

Рыцарь Империи

Буревой Андрей
3. Одержимый
Фантастика:
фэнтези
9.39
рейтинг книги
Рыцарь Империи

Разоблаченная Изида. Том II

Блаватская Елена Петровна
2. Теософия
Религия и эзотерика:
эзотерика
5.00
рейтинг книги
Разоблаченная Изида. Том II

Возвышение Меркурия. Книга 4

Кронос Александр
4. Меркурий
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Возвышение Меркурия. Книга 4

Период распада

Афанасьев Александр
Фантастика:
боевая фантастика
5.00
рейтинг книги
Период распада

Многоточие сборки

Андреева Юлия Игоревна
1. От вчера до завтра
Документальная литература:
биографии и мемуары
прочая документальная литература
5.00
рейтинг книги
Многоточие сборки