20.2. Вычисления матриц
Бывают такие ситуации, когда существует примерно два-три массива со своими значениями, при этом половина значений присутствуют и в первом, и во втором, и в третьем, а вам при постановке задач необходимо создать такой массив, в котором эти значения встречались бы только один раз, т. е. не повторялись ни в первом, ни во втором, ни в третьем. Данная задача решается при помощи функции array_diff(), которая используется в версиях старше РНР 4. Синтаксис данной функции выглядит следующим образом:
array array_diff (array array1, array array2 [, array...])
Данная функция возвращает массив, состоящий из всех элементов массива array1, не встречающихся с другими элементами. Другими словами, сравниваются значения и выбираются те, которые ни разу не совпали. Пример реализации данной функции:
$array1 = array ("а" => "машина", "человек", "собака");
$array2 = array ("b" => "машина", "человек", "дом");
$result = array_diff($array1, $array2);
Результатом выполнения данной программы будет массив array ("собака"). А результатом примера
Sarray1 = array ("a" => "green", "red", "blue");
$array2 = array ("b" => "green", "yellow", "red");
$array3 = array ("c" => "green", "blue", "red");
$result = array_diff ($arrayl, $array2, $array3);
print_r($result);
будет пустой массив, все элементы массива $array1 встречаются в массиве $array2 и в массиве $array3.
Теперь рассмотрим другую функцию, которая выводит массив всех значений, совпавших со значениями массивов, включенных в эту функцию. Данная функция выглядит так:
array array_intersect(array array1, array array2 [, array...])
Она, как и предыдущая, возвращает массив значений. Применяется в РНР 4 и старше. Рассмотрим примеры, описываемые нами ранее:
Sarray1 = array("а" => "машина", "человек", "собака"); $array2 = array("b" => "машина", "человек", "дом"); $result = array_intersect($array1, $array2);
Массив, который возвратит данная функция, будет представлять из себя следующее:
array("a" => "машина", "человек");
Как видно, те значения, которые встречаются в массиве будут входить в наш новый массив.
Приведем другой пример:
$array1 = array("а" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$array3 = array("c" => "green", "blue", "red");
$result = array_intersect($array1, $array2, $array3);
print_r($result);
После выполнения данного кода будет создан массив, содержащий все элементы массива $array1, т. е. он каким был, таким и останется.