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

    somare orari in un array

    ho questo array:

    $_SESSION['lista'][$contatore] = array('contatore'=>$contatore,'ore'=>$_POST['ore'],'nominativo'=>$_POST['nominativo']);

    all'interno posso avere:

    [1] => Array ( [contatore] => 1 [ore] => 05:30 [nominativo] => 3)
    [2] => Array ( [contatore] => 2 [ore] => 05:30 [nominativo] => 4)
    [3] => Array ( [contatore] => 3 [ore] => 05:30 [nominativo] => 3)
    [4] => Array ( [contatore] => 4 [ore] => 06:30 [nominativo] => 6)
    ......e così via

    come posso fare la somma di tutte le [ore] che hanno lo stesso [nominativo]?

    Grazie a tutti
    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Prova così
    codice:
    function SommaOreNominativo(array $array,$nominativo)
    {
        $somma = 0;
        foreach($array as $contatore){
            if($contatore['nominativo'] == $nominativo){
                $ora = explode(':',$contatore['ore']);
                $somma += $ora[0] + ($ora[1]/60);
            }
        }
        return (int)$somma;
    }
    
    echo SommaOreNominativo($_SESSION['lista'],$numero);
    Ultima modifica di RoTeam; 22-08-2014 a 20:00

  3. #3
    Non và, restituisce sempre zero

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Quote Originariamente inviata da cinghialotto35 Visualizza il messaggio
    Non và, restituisce sempre zero
    Puoi fare un print_r dell'array che passi alla funzione?

  5. #5
    Array (
    [1] => Array ( [contatore] => 1 [ore] => 05:30 [nominativo] => 3)
    [2] => Array ( [contatore] => 2 [ore] => 05:30 [nominativo] => 3 )
    [3] => Array ( [contatore] => 3 [ore] => 05:30 [nominativo] => 4 )
    [4] => Array ( [contatore] => 4 [ore] => 05:00 [nominativo] => 2 )
    [5] => Array ( [contatore] => 5 [ore] => 05:00 [nominativo] => 3 ) )

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Quote Originariamente inviata da cinghialotto35 Visualizza il messaggio
    Array (
    [1] => Array ( [contatore] => 1 [ore] => 05:30 [nominativo] => 3)
    [2] => Array ( [contatore] => 2 [ore] => 05:30 [nominativo] => 3 )
    [3] => Array ( [contatore] => 3 [ore] => 05:30 [nominativo] => 4 )
    [4] => Array ( [contatore] => 4 [ore] => 05:00 [nominativo] => 2 )
    [5] => Array ( [contatore] => 5 [ore] => 05:00 [nominativo] => 3 ) )
    codice:
    $array = [
      ['contatore' => 1, 'ore' => '05:30', 'nominativo' => 3],
      ['contatore' => 2, 'ore' => '05:30', 'nominativo' => 3],
      ['contatore' => 3, 'ore' => '05:30', 'nominativo' => 4],
      ['contatore' => 4, 'ore' => '05:00', 'nominativo' => 2],
      ['contatore' => 5, 'ore' => '05:00', 'nominativo' => 3]
    ];
    
    
    function SommaOreNominativo(array $array,$nominativo)
    {
        $somma = 0;
        foreach($array as $contatore){
            if($contatore['nominativo'] == $nominativo){
                $ora = explode(':',$contatore['ore']);
                $somma += $ora[0] + ($ora[1]/60);
            }
        }
        return (int)$somma;
    }
    
    
    echo SommaOreNominativo($array,3); //16
    A me funziona e restituisce 16 per il normativo 3 cioè 15 ore e 60 minuti nell'esempio

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.