nor1m
@nor1m
web-developer

Как сделать поиск пересечений в нескольких массивах?

Доброго времени суток.
Я использую array_intersect, но он ищет совпадения во всех массивах, а мне нужно, чтобы я сам указывал кол-во групп засчета пересечения.
Пример:
$array1 = array ("a" => "green", "red", "yellow");
			$array2 = array ("b" => "green", "yellow", "red");
			$array3 = array ("b" => "green", "blue", "red");
			$full_array[] = $array1;
			$full_array[] = $array2;
			$full_array[] = $array3;
			$result = array_intersect ( ...$full_array );
			debug( $result );

выведет Array ( [a] => green [0] => red ), а мне нужно чтобы он искал в 3 массивах, но если элемент есть в 2-х из них, то он отправлялся в другой массив.
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
nor1m
@nor1m Автор вопроса
web-developer
Решил вопрос. Использую array_count_values.
/**
		 * функция получения пользователей, состоящих в n кол-ве групп
		 * @param type $array массив с юзерами
		 * @return type готовый массив с юзерами
		 */
		private function get_array($array){
			$count_group = $this -> filter;
			$new_array = array();
			$array_count = array_count_values( $array );
			foreach ($array_count as $key => $value) {
				if( $value >= $count_group ){
					array_push($new_array, $key);
				}
			}
			return $new_array;
		}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Не понимаю, так при таких массивах и должен получаться Array ( [a] => green [0] => red )
Ведь элементы green и red есть во всех трёх.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы