Это еще одна функция для поиска значения в массиве. В отличие от in_array в результате работы array_search возвращает значение ключа, если элемент найден, и ложь – в противном случае.
array_search("искомое значение", "массив", "ограничение на тип");
Сравнение строк чувствительно к регистру, а если указан третий аргумент, то сравниваются еще и типы значений.
Пример 2. Пусть есть массив языков программирования. Причем ключом каждого элемента является номер, указывающий, каким по счету был изучен этот язык.
<?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 – м";
}
?>
Если искомых элементов в массиве несколько, то в этом случае функция array_search() вернет ключ первого из найденных элементов. Чтобы получить ключи всех элементов, нужно воспользоваться функцией array_keys().
Функция array_keys выбирает все ключи массива. Но у нее имеется дополнительный аргумент, с помощью которого можно получить список ключей элементов с конкретным значением.
|
|
array_keys ("массив", "значение для поиска");
Функция array_keys() возвращает как строковые, так и числовые ключи массива, организуя все значения в виде нового массива с числовыми индексами.
<?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_values(массив) - функция для получения всех значений массива. Все значения переданного ей массива записываются в новый массив, проиндексированный целыми числами, т.е. все ключи массива теряются, остаются только значения.
Функция array_unique(массив) возвращает новый массив, в котором повторяющиеся элементы фигурируют в одном экземпляре. Таким образом, вместо нескольких одинаковых значений и их ключей мы имеем одно значение.
<?php
$langs = array("Lisp", "Java", "Python", "Java", "PHP", "Perl", "Lisp");
print_r(array_unique($langs));
?>
Получим следующее:
Array ([0] => Lisp [1] => Java [2] => Python [3] => PHP [4] => Perl)
Функция array_slice выделяет из массива какой-нибудь поднабор.
array_slice (массив, номер_элемента, длина);
Эта функция выделяет подмассив длины длина в массиве массив, начиная с элемента, номер которого задан параметром номер_элемента.
Если задать параметр длина при использовании array_slice, то будет выделен подмассив, имеющий ровно столько элементов, сколько задано этим параметром. Длину можно указывать и отрицательную. В этом случае интерпретатор удалит с конца массива число элементов, равное модулю параметра длина. Если длина не задана, то подмассив выделяется до конца исходного массива.
|
|
Положительный номер_элемента указывает на порядковый номер элемента относительно начала массива, отрицательный – на номер элемента с конца массива.
<?php
$arr = array(1, 2, 3, 4, 5);
$sub_arr = array_slice($arr, 2);
print_r($sub_arr); //выведет подмассив, состоящий из элементов 3, 4, 5
$sub_arr = array_slice($arr,-2);
print_r($sub_arr); // выведет подмассив, из элементов 4, 5
$sub_arr = array_slice($arr, 2, 2); // содержит массив из элементов 3, 4
$sub = array_slice($arr,-3, 2); // тоже содержит массив из элементов 3, 4
$sub1 = array_slice($arr,0, -1); // содержит массив из элементов 1, 2, 3, 4
$sub2 = array_slice($arr,-4, -2); // содержит массив из элементов 2, 3
?>