array array_intersect_assoc(array data, array comparison, .)
Функция array_intersect_assoc возвращает массив с элементами, которые встречаются во всех массивах, аналогично функции array_intersect. Кроме идентичности элементов, должны совпадать индексы. Эта функция является дополнением функции array_diff_assoc.
boolean array_key_exists(key, array data)
Функция array_key_exists проверяет существование индекса в заданном массиве.
array array_keys(array data, string value)
Функция array_keys (листинг 11.28) возвращает массив индексов, используемых в массиве data. При указании необязательного аргумента value возвращается только подмножество индексов, указывающих на элемент с заданным значением. 

Листинг 11.28. Функция arraykeys

<?php
//создать случайные данные для тестирования (0 или 1)
srand(time());
for($i=0; $i<10; $i++)
{
$data[] = rand(0,1);
}
// распечатать индексы для 1 foreach(array_keys($data, 1) as $key)
{
print("$key<br>n");
}
?>

array array_map(string function, array data, .)
Функция array_map (листинг 11.29) применяется для использования функции обратного вызова к каждому элементу аргумента data. PHP вызывает заданную функцию с каждым элементом массива. Этой функции можно задавать любое количество дополнительных массивов, и PHP будет использовать их элементы для функции обратного вызова. При этом предполагается, что функция обратного вызова может принимать столько аргументов, сколько будет передано массивов (рис. 11.7).

Листинг 11.29. Функция array_map

<?php
$a = array(1, 2, 3); $b = array(4, 5, 6); $c = array(7, 8); function add($n1, $n2)
{
return($n1 + $n2);
}
//каждый элемент
print_r(array_map('add', $a, $b)); // составить распределение массивов print_r(array_map(NULL, $a, $b, $c));
?>

Эту функцию можно задавать с функцией обратного вызова NULL, и в таком случае PHP создаст массив массивов заданного массива. Первый элемент будет массивом первых элементов каждого массива и т.д.
Если хотя бы один из массивов будет короче другого, PHP дополнит "лишние" элементы значениями NULL.
Данные
array array_merge(array data, array data, .)
Функция array_merge (листинг 11.30) принимает один или более массивов и возвращает единый массив, содержащий все элементы. Элементы индексируются целыми числами, и в большей части перенумеровываются. Элементы, индексированные строками, сохраняют свои индексные значения и добавляются в соответствии с порядком в исходном массиве. При этом они могут замещать предыдущие значения. Если нет уверенности в индексах объединяемых массивов, для того чтобы убедиться в том, что все индексы представлены целыми числами, можно воспользоваться функцией array_values.

Листинг 11.30. Функция array_merge

<?php
// задать массив с названиями цветов $colors = array("red", "blue", "green"); $more_colors = array("yellow", "purple", "orange"); //объединить массивы
print_r(array_merge($colors, $more_colors));
?>
array array_merge_recursive(array data, array data, .)
Функция array_merge_recursive (листинг 11.31) действует аналогично функции array_merge, за исключением того, что она объединяет элементы со строковыми индексами в подмассивы (рис. 11.8). 
Листинг 11.31. Функция array_merge_recursive

<?php
$robot1 = array(
,name,=>,Avenger', 'weapon'=>array(
'Machine Gun', 'Laser'), 'motivation'=>'tires'
);
$robot2 = array(
'name'=>'Assassin', 'weapon'=>'Machine Gun', 'motivation'=>array( 'tires', 'wings'
)
);
print_r(array_merge_recursive($robot1, $robot2));
?>
Данные