array array_count_values(array data)
Функция array_count_values (листинг 11.22) возвращает счетчик каждого отдельного значения, заданного аргументом data. Возвращенный массив индексируется значениями, заданными в аргументе data. Несмотря на то, что в приведенном ниже примере используется цифровой массив, функция array_count_values сможет работать с элементами, которые хранят данные любого типа.

Листинг 11.22. Функция array_count_values

<?php
//генерация случайных чисел в диапазоне от 1 до 5
$sample_size = 100;
srand(time());
for($i=0; $i<$sample_size; $i++)
{
$data[] = rand(1,5);
}
// пересчет элементов
$count = array_count_values($data);
// отсортировать по индексам
ksort($count);
// распечатать итоговые данные foreach($count as $number=>$count)
{
print("$number: $count (" .
(100 * $count/$sample_size) . "%)<br>n");
}
?>

array array_diff(array data, array comparison, ...)
Функция array_diff (листинг 11.23) возвращает массив, содержащий элементы из первого аргумента, которые не встречаются в любом другом аргументе. Индексы первого массива сохраняются. Два элемента считаются идентичными, если их представление в строковом формате является аналогичным. В этом смысле значение "123" равно значению 123.00 (рис. 11.3).
Пересечение двух массивов можно определить с помощью функции array_intersect.

Листинг 11.23. Функция arraydiff

<?php
$a = array(1,2,3,4,5,6,7,8);
$b = array(2,6);
$c = array(8,1,5,6);
print_r(array_diff($a, $b, $c));
print_r(array_intersect($a, $b, $c));
?>
Данные
array array_diff_assoc(array data, array comparison, .)
Функция array_diff_assoc (листинг 11.24) возвращает массив, содержащий элементы массива, указанного в первом аргументе, которые отсутствуют в любом из следующих аргументов (аналогично функции array_diff). Кроме идентичности элементов, должны совпадать индексы (рис. 11.4). Эту функцию дополняет функция array_intersect_assoc.

| Листинг 11.24. Функция array_diff_assoc_
<?php
$a = array(
1=>'apple',
2=>'ball',
3=>'cat',
4=>'dog',
,ape'=>,banana'
);
$b = array(
2=>'apple', ,ape'=>,banana'
);
$c = array(
3=>'cat', 2=>,ball', ,cat,=>,ball', ,ape'=>,banana'
);
print_r(array_diff_assoc($a, $b, $c)); print_r(array_intersect_assoc($a, $b, $c));
?>
Данные
array array_fill(integer start, integer number, value)
Функция array_fill (листинг 11.25; рис. 11.5) используется для создания массива заданного размера, все элементы которого заполнены одним и тем же значением. Его индексы являются цифровыми и начинаются со значения, указанного аргументом start. При передаче в качестве значения наполнителя объекта будьте осторожны. При вызове функций PHP передает объекты по ссылке, а не значением. Следовательно, использование объекта в качестве третьего аргумента этой функция приведет к созданию массива ссылок на сам объект. Если необходимо создать
копию объекта, нужно использовать метод _clone. Об объектах см. в главе 6,
"Классы и объекты".
Листинг 11.25. Функция arrayfill
<?php
print_r(array_fill(100, 3, 'filler'));
Данные
array array_filter(array data, string function)
Функция array_filter (листинг 11.26) удаляет элементы из массива на основании функции обратного вызова, сохраняя при этом индексы. Функция обратного вызова должна принимать одно значение и возвратить логическое значение. Она должна вернуть значение TRUE, если значение должно присутствовать в возвращаемом массиве.

Листинг 11.26. Функция arrayfilter

<?php
function is_square($n) {
$s = sqrt($n); return(intval($s) == $s);
}
$a = range(2, 100);
foreach(array_filter($a, 'is_square') as $n)
{
print("$n<br>");
}

 ?> 
array array_flip(array data)
Функция array_flip (листинг 11.27) возвращает данные из аргумента data, где индексы и значения меняются местами. При этом значения должны быть допустимыми индексами, т.е. целыми или строками. В противном случае PHP выводит предупреждение и пропускает такой элемент. Многократное повторение значения приводит к тому, что по мере их преобразования в индексы они перекроют друг друга (рис. 11.6).

j Листинг 11.27. Функция array_flip_
<?php
$colors = array("red", "blue", "green"); print_r(array_flip($colors));
?>

array array_intersect(array data, array comparison, .)
Данные
Функция array_intersect возвращает массив с элементами, которые встречаются во всех массивах, заданных в аргументах. Индексы при этом сохраняются. Два элемента считаются идентичными, если их представление в строковом формате является аналогичным. В этом смысле значение "123" равно 123.00. Различие между двумя и несколькими массивами можно определить с помощью функции array_diff.