Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    come si riconosce se i numeri sono consecutivi?

    Scusate il titolo

    In pratica in una select tramite group_concat estraggo dei numeri e li metto sulla stessa riga abbinati ad un nome, in linea di massima dovrebbero essere consecutivi ma può capitare che manchi un numero (ad esempio 1 2 3 5 6 7...), vorrei sapere se esite qualche codice per verificare se manca uno dei numeri e stamparlo (magari con una lettera di fianco o di un altro colore)

    grazie
    Manifesto Aggiornato
    Sono proprietà privata di Reika

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Codice PHP:
    $numeri = array(1,2,3,5,6,7);
    $mancanti array_diff(range(1,7),$numeri);
    print_r($mancanti); // stamperà 4 
    ovviamente devi recuperare il valore superiore del range per fare il giochetto.

  3. #3
    Originariamente inviato da nicola75ss
    Codice PHP:
    $numeri = array(1,2,3,5,6,7);
    $mancanti array_diff(range(1,7),$numeri);
    print_r($mancanti); // stamperà 4 
    ovviamente devi recuperare il valore superiore del range per fare il giochetto.

    in pratica in $numeri = array metto il risultato di group_concat (così da avere tutti i numeri) e con array_diff controllo quali mancano, ma con print_r($mancanti); i numeri mancanti me li stampa alla fine/inizio, io vorrei che fosse una cosa lineare (1,2,3, 4mancante, 5,6...)

    chiedo troppo?

    edit capito male sul valore più alto
    Manifesto Aggiornato
    Sono proprietà privata di Reika

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Codice PHP:
    function mancanti($stringa)
    {
        
    $numeri explode(',',$stringa); 
        
    $mancanti array_diff(range(1,max($numeri) ),$numeri);
        
            
    $presenti = array();
        foreach(
    $numeri as $valore)
          
    $presenti[$valore] = 'presente';

        
    $assenti = array();
        foreach(
    $mancanti as $valore)
           
    $assenti[$valore] = 'mancante';

        
    $finale $presenti $assenti// li sommo per non perdere le chiavi
        
    ksort($finale);
        
    $risultato = array();
        foreach(
    $finale as $chiave => $valore) {
        
    $valore == 'mancante' $risultato[] = $chiave.' '.$valore $risultato[] = $chiave;
        }

        
    $str implode(',',$risultato);
        return 
    $str;
    }


    $formattata mancanti(campo_generato_dal_group_concat); 

  5. #5
    grazie appena posso lo provo
    Manifesto Aggiornato
    Sono proprietà privata di Reika

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    questa è meno fagiana.
    Codice PHP:
    function mancanti2($stringa)
    {
        
    $numeri explode(',',$stringa); 
        
    $finale = array();
        for (
    $i 1$max max($numeri); $i <= $max$i++)
            
    in_array($i,$numeri) ? $finale[] = $i $finale[] = $i.' mancante';

    $str implode(',',$finale);
    return 
    $str;

    Avevo la sensazione di aver fatto il giro del mondo inutilmente. :berto:

  7. #7
    scusa ma non ho capito come si usa
    il risultato di group_concat sta in $results['valori'], a cosa lo devo sostituire?

    $i già lo uso per numerare le righe, è un problema?
    Manifesto Aggiornato
    Sono proprietà privata di Reika

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    $formattata = mancanti($results['valori']);
    echo $formattata;

  9. #9
    c'è qualcosa che non va...
    se i numeri sono due stampa

    1 mancante, 2

    se sono tre stampa

    1 mancante, 2 mancate, 3

    :master:

    edit mentre dovrebbe stampare

    1,2, mancante oppure 1,2 3mancante
    1,2,3
    Manifesto Aggiornato
    Sono proprietà privata di Reika

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da luigi.84
    c'è qualcosa che non va...
    se i numeri sono due stampa

    1 mancante, 2

    se sono tre stampa

    1 mancante, 2 mancate, 3

    :master:
    cioè???

    funziona in questo modo
    1,3,4 1,2 mancante,3,4
    1,2,5 1,2,3 mancante,4 mancante,5

    non era questo che volevi?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.