Tu dichiari questo
$attivo_array = array('No','Si');
e poi vuoi recuperarne il contenuto così
$attivo = $attivo_array[$row['attivo']];
in cui $row['attivo'] contiene 'Si' oppure 'No', giusto?
Bene, il contenuto di un array si recupera indicando l'indice della posizione che si vuole recuperare.
Nel tuo caso 'Si' e 'No' rappresentano il contenuto dell'array, non gli indici.
Dopo la dichiarazione di $attivo_array prova a mettere queste 2 righe
print_r($attivo_array);
exit;
Quella che ti viene fuori è la struttura dell'array, capisci ora la differenza tra indice e contenuto?
Altra cosa, usa SEMPRE il tag completo <?php NON usare lo short tag <?

Rispondi quotando