Пересечение массивов

Benderlio

Новичок
Пересечение массивов

есть два массива, необходимо найти уникальные значения, т,е. результат должен быть weather
что- то перепробовал array_diff_assoc и т.п. не получается. Подскажите.
array(8) {
[0]=>
string(4) "news"
[1]=>
string(3) "pic"
[2]=>
string(6) "afisha"
[3]=>
string(3) "adv"
}
array(9) {
[0]=>
string(4) "adv"
[1]=>
string(7) "weather"
[2]=>
string(3) "pic"
[3]=>
string(4) "news"
[4]=>
string(6) "afisha"
}

Спасибо.
 

Benderlio

Новичок
я решительно не понимаю как это работает?
мне необходимо что бы остался только brown,blue,yellow
а получается
$array1 = array("green", "brown", "blue", "red");
$array2 = array("green", "yellow", "red");
$result = array_intersect($array1, $array2);

var_dump($result);

[array(2) {
[0]=>
string(5) "green"
[3]=>
string(3) "red"
}
 

Adelf

Administrator
Команда форума
А сорри :) intersect решает обратную задачу(находит общие элементы).
Если у тебя всегда будет два массива, то можно просто "отнять" этот массив из двух исходных и соединить получившееся. ты получишь нужное.

Если тебе нужно более общий случай - надо делать так. Соединять массивы в один. Считать количества [m]array_count_values[/m] . и оставить только те, количества которых равны 1.
 

craz

Нестандартное звание
первым массивом бежим по второму если !in_array значит нашли нужное
 

Urville

Новичок
PHP:
$array1 = array("green", "brown", "blue", "red"); 
$array2 = array("green", "yellow", "red"); 
$result = array_merge(array_diff($array1, $array2), array_diff($array2, $array1));  
var_dump($result);
array(3) {
[0]=> string(5) "brown"
[1]=> string(4) "blue"
[2]=> string(6) "yellow"
}
 
Сверху