<?php

class Nfe {

function isValid($chaveAcesso) {
    if (empty($chaveAcesso) || strlen(trim($chaveAcesso)) !== 44) {
        return false;
    }

    $chaveParcial = substr($chaveAcesso, 0, 43);
    $multiplicadores = [2, 3, 4, 5, 6, 7, 8, 9];

    $i = 42;
    $somaPonderada = 0;

    while ($i >= 0) {
        for ($j = 0; ($j < count($multiplicadores) && $i >= 0); $j++) {
            $somaPonderada += $chaveParcial[$i] * $multiplicadores[$j];
            $i -= 1;
        }
    }

    $resto = $somaPonderada % 11;
    $dv = ($resto === 0 || $resto === 1) ? 0 : 11 - $resto;

    return strval($dv) === substr($chaveAcesso, 43, 1);
}


}
