EDIT: per ora ho risolto con una funziona di callback, ma è lenta.
Codice PHP:
if ( $annate ) {
$anni = [];
array_walk_recursive( $annate, function($valore) use (&$anni) {
if (in_array($valore, $anni) === false) $anni[] = $valore;
});
$listaAnni = '';
foreach( $anni as $anno )
$listaAnni .= "<li><a href=\"registri.php?viz=1®=leg&anno=$anno\">Anno $anno</a></li>\n";
}
Dove:
- $annate è l'array che contiene gli anni così come risultano dopo la query;
- $anni è un array di comodo in cui finiranno gli anni "validi";
- nella funzione, se il valore passato al momento non esiste dentro l'array $anni, vi viene aggiunto;
- $listaAnni è la lista per il menù;
- compila la lista per la dropbox ciclando all'array $anni.
Problemi? Sì, uno solo, è lenta perché deve ciclare l'intero archivio di anni contenuto in $annate.
Per ora c'è solo il 2020 con già 3566 valori, il 2021 solo uno creato per le prove, ma a fine anno si prevede un numero molto alto, e se è già lento così, è chiaro che il tutto è solo un ripiego.
La vera soluzione deve venire dall'SQL ma per ora non so che query invocare.