Visualizzazione dei risultati da 1 a 7 su 7

Discussione: somma di variabili

  1. #1
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,562

    somma di variabili

    Salve, ho delle variabili così:
    $minuti_totali_[3]
    $minuti_totali_[4]
    eccetera fino a 22
    le ho create così, almeno se devo fare delle operazioni posso fare un ciclo
    $minuti_totali_[$i] e bla bla bla..
    ora ho bisogno di sommarle e scrivere l'echo così:
    echo $minuti_totali_[3]
    echo ($minuti_totali_[3]+$minuti_totali_[4])
    echo ($minuti_totali_[3]+$minuti_totali_[4]+$minuti_totali_[5])
    eccetera sempre fino a 22.. c'è un modo veloce, senza impazzire a scrivere tutto il codice a mano?
    (in realtà l'ho già scritto, ma se trovassi una soluzione migliore cambierei tranquillamente )

    grazie a chiunque mi darà una mano

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,407
    Codice PHP:
    $somma 0;

    foreach( 
    $minuti_totali_ as $m )
    {
        
    $somma += $m;
    }

    echo 
    $somma

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,562
    me le fa tutte e 20?

  4. #4
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,562
    non so se non sono stato chiaro abbastanza:
    io ho bisogno di tutte le somme
    echo $minuti_totali_[3]
    echo ($minuti_totali_[3]+$minuti_totali_[4])
    echo ($minuti_totali_[3]+$minuti_totali_[4]+$minuti_totali_[5])
    echo $minuti_totali_[3]
    echo ($minuti_totali_[3]+$minuti_totali_[4])
    echo ($minuti_totali_[3]+$minuti_totali_[4]+$minuti_totali_[5]+$minuti_totali_[6])
    eccetera..

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    4,113
    Ciao, il codice di Alhazred fa una somma unica di tutti i valori, se a te serve stampare le varie somme parziali, passaggio per passaggio, prova a spostare, dentro il ciclo, quell'echo.

    Potrebbe essere una cosa del genere:
    Codice PHP:
    $somma 0;

    foreach( 
    $minuti_totali_ as $m )
    {
        
    $somma += $m;
        echo 
    $somma.'<br>';  // Il br incolonna i risultati in un documento html, ma è chiaro che puoi costruirti la stringa come meglio credi

    Ultima modifica di KillerWorm; 15-05-2018 a 17:03
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 15% tra i post del forum; il 9% sul web.
    Ti resta l’1% ... usalo bene!

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,562
    ho fatto così e va
    for($L=3;$L<23;$L++) {
    for($J=3;$J<$L;$J++) {
    $somma1[$L] += $minuti_totali_[$J];
    }
    }
    grazie ad entrambi comunque

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jul 2002
    residenza
    Lyon
    Messaggi
    5,341
    Quote Originariamente inviata da telegio Visualizza il messaggio
    ho fatto così e va
    for($L=3;$L<23;$L++) {
    for($J=3;$J<$L;$J++) {
    $somma1[$L] += $minuti_totali_[$J];
    }
    }
    grazie ad entrambi comunque
    Gestisco ogni tanto alcuni programmatori. Se uno mi mostrasse un codice come il tuo lo manderei a quel paese.
    Già all'esecuzione tira fuori dei "Notice: Undefined offset" perché tenti di fare una somma in un posto di un array che non esiste.

    Codice PHP:
    $somma1[$L] += $minuti_totali_[$J]; 
    si puo' anche scrivere
    Codice PHP:
    $somma1[$L] = $somma1[$L] + $minuti_totali_[$J]; 

    Per ogni posto dell'array quando fai la prima assegnazione, la parte destra della riga ( $somma1[$L] ) non ha alcun valore ovvero il posto dell'array non esiste ancora.

    Per ovviare cio' puoi fare un ciclo che inizializza l'array finale tipo
    Codice PHP:
    $somma1 = array();
    for(
    $L=3;$L<23;$L++) {
     
    $somma1[$L] = 0;

    o

    Codice PHP:
    $somma1 = array();
    for(
    $L=3;$L<23;$L++) {
     if (!isset(
    $somma1[$L])) $somma1[$L] =0;
     for(
    $J=3;$J<$L;$J++) {
      
    $somma1[$L] += $minuti_totali_[$J];
     }


    Ma comunque non funziona.

    Codice PHP:
    for($J=3;$J<$L;$J++) 
    Se $L=3 allora non si entra nel for di sopra e di conseguenza $somma1[3] = 0 e tutti gli altri posti hanno un valore errato.

    Bisogna scrivere :
    Codice PHP:
    for($J=3;$J<=$L;$J++) 

    Penso si possa scrivere nel modo indicato da Alhazred e da KillerWorm.
    Codice PHP:
    $somma1 = array();
    $somma 0;
    foreach(
    $minuti_totali_ as $L => $m)
    $somma += $m;
     
    $somma1[$L] = $somma;


    L'esperienza mi ha insegnato che quando si comincia a scrivere codice complicato per risolvere un problema tutto sommato semplice significa che si è sulla strada sbagliata e che bisogna ripartire da 0.
    L'esperienza mi ha insegnato anche che quando c'è un codice funzionante più semplice del mio me lo segno, e ne adopero la tecnica.
    Si migliora cosi.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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