#3.14 php Сравнение массивов
Primary tabs
В РНР имеются средства для сравнения массивов и нахождения различий в их элементах. Допустим, имеются два массива, в которых совпадает только второй элемент. Для построения массива, в который будут входить только те элементы первого массива, которые отсутствуют во втором, используется функция array_diff()
.
<?php $local_fruits = array ("яблоко", "гранат", "абрикос"); $tropical_fruits = array ("ананас", "гранат", "папайя"); $difference = array_diff ($local_fruits, $tropical_fruits); foreach ($difference as $key => $value) { echo "Индекс: $key; Значение: $value<BR>"; } ?>
В результате выполнения этого примера будут выведены строки:
Индекс: 0; Значение: яблоко Индекс: 2; Значение: абрикос
В данном случае сравнивались только значения элементов массива. Если же нужно анализировать еще и индексы, на помощь приходит функция array_diff_assoc()
(ее название объясняется тем, что массивы со строковыми индексами называются также ассоциативными массивами):
<?php $local_fruits = array ("фрукт1" => "яблоко", "фрукт2" => "гранат", "фруктЗ" => "абрикос"); $tropical_fruits = array ("фрукт_1" => "ананас", "фрукт_2" => "гранат", "фрукт_3" => "папайя"); $difference = array_diff_assoc ($local_fruits, $tropical_fruits); foreach ($difference as $key => $value) { echo "Индекс: $key; Значение: $value<BR>"; } ?>
В результате будут выведены строки (следует обратить внимание на то, что полностью совпадающих как по значению, так и по индексу элементов в двух массивах не найдено):
Индекс: фрукт1; Значение: яблоко Индекс: фрукт2; Значение: гранат Индекс:' фруктЗ; Значение: абрикос
Встречается и обратная задача — найти элементы, которые являются общими для двух массивов. В этом случае используется функция array_intersect()
:
<?php $local_fruits = array ("яблоко", "гранат", "абрикос"); $tropical_fruits = array ("ананас", "гранат", "папайя"); $difference = array_intersect ($local_fruits, $tropical_fruits); foreach($difference as $key => $value) { echo "Индекс: $key; Значение: $value<BR>"; } ?>
В результате будет выведена единственная строчка:
Индекс-1; Значение: гранат
Если же требуется учесть и индексы при определении общих элементов, используется функция array_intersect_assoc()
:
<?php $local_fruits = array ("фрукт1" => "яблоко", "фрукт2" => "гранат", "фруктЗ" => "абрикос"); $tropical_fruits = array ("фрукт" => "яблоко", "фрукт2" => "гранат", "фруктЗ" => "папайя"); $difference = array_intersect_assoc ($local_fruits, $tropical_fruits); foreach ($difference as $key => $value) { echo "Индекс: $key; Значение: $value\n"; } ?>
Результатом выполнения этого примера будет также одна строка (следует обратить внимание, что первые элементы массивов равны по значениям, но не по индексам):
Индекс:фрукт2; Значение: гранат
- Log in to post comments
- 202 reads