Tu fais une boucle sur les types et une boucle sur les ports.
Mais pour chaque type tu associes un port, donc au final c'est la même information.
Pas besoin de deux boucles donc, une seule suffit.
Il te faut juste l'association type <=> numéro de port.
if( $type == "type1" )
$port = "4242";
// ou l'association inverse
if( $port == "4242" )
$type = "type 1";
Concernant le fait d'en avoir que un de chaque c'est à cause de ta mauvaise utilisation des foreach et de ses arguments.
Tu écrases l'array à chaque itération.
Pour rappel :
foreach($array as $key => $value)
Ou plus simplement :
foreach($array as $value)