// update dei valori delle firme
for ($i = 0; $i < $ncariche; $i++) {
    $dd = OppSimilaritaPeer::retrieveByPK($politici[$i]['id'], $politici[$i]['id']);
    if (is_null($dd)) {
        $dd = new OppSimilarita();
        $dd->setCaricaFromId($politici[$i]['id']);
        $dd->setCaricaToId($politici[$i]['id']);
    }
    for ($j = $i + 1; $j < $ncariche; $j++) {
        $d = OppSimilaritaPeer::retrieveByPK($politici[$i]['id'], $politici[$j]['id']);
        if (is_null($d)) {
            $d = new OppSimilarita();
            $d->setCaricaFromId($politici[$i]['id']);
            $d->setCaricaToId($politici[$j]['id']);
        }
        $d->setSigningSimilarity(OppSimilaritaPeer::similarityForSignatures($politici[$i], $politici[$j]) / $ncariche);
        $d->save();
        // scrittura elemento simmetrico
        $ds = OppSimilaritaPeer::retrieveByPK($politici[$j]['id'], $politici[$i]['id']);
        if (is_null($ds)) {
            $ds = new OppSimilarita();
            $ds->setCaricaFromId($d->getCaricaToId());
            $ds->setCaricaToId($d->getCaricaFromId());
        }
        $ds->setSigningSimilarity($d->getSigningSimilarity());
        $ds->save();
        $ds = null;
        unset($ds);
        $d = null;
        unset($d);
    }