Bueno, no es que sea la solucion mas "correcta". Los atributos de los controles de los formularios estan para ponerse. Mejor solucion seria comprobar si el nombre del campo esta en el array de indices:
Código PHP:
foreach ($variables as $campo => $valor) {
if (!in_array($campo,array_keys($tipodevalor))) continue;
$campos[]=$campo;
Saludos.