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 <?