Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Trovare sequenza numerica

    Buon giorno.
    Nella tabella tb_ferie ho due campi "dal","al" per tot operatori, esempio:

    id | id_operatore | dal | al
    1 1 2018-05-01 2018-05-16
    2 1 2018-05-30 2018-05-31
    3 2 2018-05-01 2018-05-16

    Devo trovare per ogni record la sequenza numerica che manca.
    creo l'array da passare alla funzione "trovaNumeroMancante" in questo modo:
    Codice PHP:
    $arrDal = array();
    while (
    $rows mysqli_fetch_object($query)) {
    $arrDal[]     = substr($rows->dal,8,2);
    $arrDal[]     = substr($rows->al,8,2);
    }
    echo 
    trovaNumeroMancante($arrDal);

    function 
    trovaNumeroMancante($vettore){
    # $vettore = array(1,3,4,5,7,9,11);   
     # contiamo gli elementi dell'array    
    $l count($vettore);        
    # calcoliamo le differenze tra i numeri    
    for($i=0$i<=$l-1$i++)    {        
    @
    $differenza $vettore[$i+1]-$vettore[$i];        
    # se la differenza tra un numero e quello successivo non è 1..        
    if($differenza != 1)            {            
    for(
    $y=1$y<=$differenza-1$y++)            {        
    # .. viene aggiunto il valore mancante            
    $val $vettore[$i]+$y;        
    # stampiamo i valori mancanti            
    echo $val;            
    }        
    }    
    }

    Il problema è che, per ogni record dovrebbe tirar fuori la sequenza mancante.
    Ma, da come ho fatto io, crea un unico array con tutti i valori quindi mi ritrovo
    $array(1,16,30,31,13,18), cosi facendo la funzione crea la sequenza mancante da 2 a 29.

    Invece vorrei che fosse da 2 a 15, poi da 14 a 17.

    Come risolvo?
    Grazie.
    Ultima modifica di ANTAGONIA; 24-05-2018 a 10:35

  2. #2
    che cos'è "la sequenza numerica che manca" ?

  3. #3
    Ho risolto cosi:
    Codice PHP:
    $arrAssenze "";            $arrDal "";            $arrAl = array();            $var "";            $art "";            $i=0;            while ($rows mysqli_fetch_object($query)) {                # unisco i dati dal->al                $arrDal     = substr($rows->dal,8,2).",".substr($rows->al,8,2);                $var[$i]    = explode(",",$arrDal);                # creo array dal->al                $arrAl[]    = (int)substr($rows->dal,8,2);                $arrAl[]    = (int)substr($rows->al,8,2);                # troviamo i giorni mancanti tra il dal->al di ogni singolo record                $arrAssenze .= trovaNumeroMancante($var[$i]);                $i++;            }            $art = explode(",",$arrAssenze);            $arrOperatori = array_merge($arrAl,$art);            echo build_html_calendar($year, $month, $events = null,$arrOperatori); 
    Nella funzione trovaNumeroMancante
    Codice PHP:
    function trovaNumeroMancante($vettore){    # definiamo l'array    # contiamo gli elementi dell'array    $l = count($vettore);    $val = "";    $art = "";    # calcoliamo le differenze tra i numeri    for($i=0; $i<=$l-1; $i++)    {        @$differenza = $vettore[$i+1]-$vettore[$i];        # se la differenza tra un numero e quello successivo non è 1..        if($differenza != 1)        {            for($y=1; $y<=$differenza-1; $y++)            {                # .. viene aggiunto il valore mancante                $val .= $vettore[$i]+$y.",";                # stampiamo i valori mancanti            }        }    }    $val = substr($val,0,-1);    return $val;} 
    Grazie.
    Ultima modifica di ANTAGONIA; 24-05-2018 a 14:19

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 © 2024 vBulletin Solutions, Inc. All rights reserved.