@
metacortex, 

 interesante forma de hacerlo.  Les propongo otra forma de hacerlo   
Código PHP:
Ver original<?php
$genero = 'un array desde la BD...';
$html = '<select name="genero" id="genero">';
foreach($genero as $gen){
    $s = ($config['genero'] == $gen ? 'selected="selected"' : '');
    $html .= '<option value="'. htmlspecialchars($gen) .'" '. $s .'>'. $gen .'</option>'; }
$html .='</select>';
  
En el mismo ciclo añadimos el "selected" y los que no cumplan con la condición se le añade la segunda parte de ese operador ternario. Este método sirve para los campos con múltiples opciones.  Solo debe añadir por variables. Ejemplo, algo así (suponiendo que los valores están en un array   
Código PHP:
Ver original<?php
$genero = 'un array desde la BD...';
$html = '<select  multiple="multiple" name="genero" id="genero">';
foreach($genero as $gen){
    $s = (in_array($gen, $array) ? 
'selected="selected"' : '');     $html .= '<option value="'. htmlspecialchars($gen) .'" '. $s .'>'. $gen .'</option>'; }
$html .='</select>';