Вложенное foreach, если другое не работает

У меня есть вложенный цикл foreach, проходящий через 2 массива с условным if - else . Когда, если возвращает значение, оператор else также работает, почему?

 //$global_plugins is an array //$xml_plugins is a string foreach($global_plugins as $key => $global_plugins){ foreach ((array) $xml_plugins as $key2 => $xml_plugins){ if (($global_plugins == $xml_plugins) && ($plugin_verso[$key] == $xml_plugin_version[$key2])){ echo 'Exact match'; }else{ echo 'Fuzzy match'; } } } 

Для этого примера массив имеет 10 значений для соответствия, когда if возвращает «Точное соответствие», он также не должен возвращать «Нечеткое совпадение», но это то, что происходит.

Для 1 подходящего значения я получаю эхо-выход: «Точное совпадение» один раз и «Нечеткое совпадение» x 10