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

    Estrarre tutti i range ammessi da un array di date from / to

    Ciao a tutti, quanto tempo...
    Ho un problema contro il quale sto sbattendo la testa da stamattina senza venirne a capo...

    In pratica da un estrazione in db ottengo un array di questo tipo:

    codice:
    0 => array:2 [
        0 => "2011"
        1 => "9999"
      ]
      1 => array:2 [
        0 => "2011"
        1 => "2016"
      ]
      2 => array:2 [
        0 => "2011"
        1 => "2013"
      ]
      3 => array:2 [
        0 => "2014"
        1 => "2016"
      ]

    Quello di cui ho bisogno, partendo da questi range di dati (9999 significa fine infinita, 0000 inizio indefinito), è di ottenere un altro array con tutti i range ammissibili al suo interno, tipo questo per capirci:

    codice:
      0 => array: 2 [
         0 => "2011"
         1 => "2013"
       ]
       1 => array: 2 [
         0 => "2014"
         1 => "2016"
       ]
       2 => array: 2 [
         0 => "2016"
         1 => "9999"
       ]
    I dati di cui sopra possono contenere anche gap tra gli anni, anni mancanti e così via e devo estrarre tutti i range ammissibili.
    Spero di essermi spiegato, non so proprio da dove cominciare...

    Grazie mille!
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,844
    Come si discrimina tra range ammissibile e non?
    L'esempio non è esplicativo, escludi "2011-9999", "2011-2016" senza dire perché lo siano stati e metti un "2016-9999" che nel primo array non c'è.

  3. #3
    Fondamentalmente l'array in input rappresenta un range di validità.
    Il ragionamento è questo.

    Il primo elemento mi dice che esiste un range:
    2011 a 9999.

    Il secondo però ne discrimina uno più ristretto che va dal 2011 al 2016, quindi il range di cui sopra si splitta in 2:
    2011 - 2016
    2017 - 9999 (errore mio sopra a scrivere 2016)

    Il terzo ne discrimina un altro che va dal 2011 al 2013 quindi quello dal 2011 al 2016 si splitta ulteriomente in 2 ed otteniamo:
    2011 - 2013
    2014 - 2016
    2017 - 9999

    Il quarto infine non "ha effetto" in quando esiste già il suo stesso range...

    Non so se mi sono spiegato, è parecchio contorto in effetti.
    Fondamentalmente dato un elenco di range devo ottenere tutti quelli "derivati" sulla base dei vari incroci...
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

Tag per questa discussione

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