#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
- 807 reads