Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Somma di array

  1. #1

    Somma di array

    Ho due array contenenti entrambi numeri, soltanto che il primo array ha piu numeri del secondo... come faccio a dirgli di sommarli, poi quando sono finiti i numeri del secondo array riniziare a usarlo da capo tipo:

    array1 >> 10 20 30 40 50
    array2 >> 10 20

    Dovrei fare 10+10 20+20 30+10 40+20 50+10...

    Mi potete aiutare, cioè è una cosa fattibile?? Grazie mille in anticipo... perche io sto provando ma non ci reisco
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  2. #2
    prova così:
    codice:
    $array1=array(10,20,30,40,50);
    $array2=array(5,10);
    $array_somma=array();
    foreach($array1 as $key1 => $valore1){
    	foreach($array2 as $key2 => $valore2){
    		if ($key1 % 2 == 0 && $key2 % 2 == 0){
    			$array_somma[]=$valore1+$valore2;
    		}elseif($key1 % 2 != 0 && $key2 % 2 != 0){
    			$array_somma[]=$valore1+$valore2;
    		}
    	}
    }
    ciao

  3. #3
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    chissà... magari funziona anche così...

    // array1: array + lungo
    // array2: array + corto

    $array_somma = array();
    for ($i=0; $i<count($array1); $i++) {
    $j = $i % count($array2);
    $array_somma[] = $array1[$i] + $array2[$j];
    }

    Comunque non garantisco perchè non l'ho provato...

    ByeZ

  4. #4
    grazie domani li provo
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  5. #5
    codice:
    <?
    $array1=array(10,20,30,40,50);
    $array2=array(5,10);
    $array_somma=array();
    foreach($array1 as $key1 => $valore1){
    	foreach($array2 as $key2 => $valore2){
    		if ($key1 % 2 == 0 && $key2 % 2 == 0){
    			$array_somma[]=$valore1+$valore2;
    		}elseif($key1 % 2 != 0 && $key2 % 2 != 0){
    			$array_somma[]=$valore1+$valore2;
    		}
    	}
    }
    
    for ($i=0;$i<count($array_somma);$i++){
    echo "$array_somma[$i] ";}
    ?>
    Funziona...il mio broblema è che non so quanti sono i numeri del primo array!!! E neanche del secondo!!
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  6. #6
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    Usa questo

    codice:
     
    <?php
    
    $array1 = array(10,20,30,40,50);
    $array2 = array(10,20,30,40,50,60,70);
    
    if(count($array1) <= count($array2)) {
    	$array_corto = $array1;
    	$array_lungo = $array2;
    } else {
    	$array_corto = $array2;
    	$array_lungo = $array1;
    } 
    	
    $array_somma = array();
    for ($i=0; $i < count($array_lungo); $i++) {
    	$j = $i % count($array_corto);
    	$array_somma[] = $array_lungo[$i] + $array_corto[$j];
    }
    
    print_r($array_somma);
    ?>
    A me funziona e sicuramente è più immediato.

    ByeZ

  7. #7
    :rollo: Scusatemi a me fate ridere un po', basta fare cosi':



    codice:
    $somma = array_sum($array1)+array_sum($array2);
    echo $somma;
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  8. #8
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    Se prima di scrivere, leggessi...

    Il tuo codice restituisce la somma dei due array...
    ...mentre Sora88 voleva qualcosa di diverso...


    codice:
     
    <?php
    
    $array1 = array(10,20,30,40,50);
    $array2 = array(10,20,30,40,50,60,70);
    
    ...(il mio codice)...
    
    //questo è il tuo codice...
    $somma = array_sum($array1)+array_sum($array2);
    echo "
    Il nostro amico: ".$somma;
    
    ....
    (questo è l'output)
    //il mio
    Array ( 
      [0] => 20 [1] => 40 [2] => 60 
      [3] => 80 [4] => 100 [5] => 70 [6] => 90 ) 
    //il tuo
    Il nostro amico: 430


    P.S. Scusa se mi fai ridere te!

    ByeZ

  9. #9
    Originariamente inviato da Avalox
    Se prima di scrivere, leggessi...

    Il tuo codice restituisce la somma dei due array...
    ...mentre Sora88 voleva qualcosa di diverso...


    codice:
     
    <?php
    
    $array1 = array(10,20,30,40,50);
    $array2 = array(10,20,30,40,50,60,70);
    
    ...(il mio codice)...
    
    //questo è il tuo codice...
    $somma = array_sum($array1)+array_sum($array2);
    echo "
    Il nostro amico: ".$somma;
    
    ....
    (questo è l'output)
    //il mio
    Array ( 
      [0] => 20 [1] => 40 [2] => 60 
      [3] => 80 [4] => 100 [5] => 70 [6] => 90 ) 
    //il tuo
    Il nostro amico: 430


    P.S. Scusa se mi fai ridere te!

    ByeZ
    Chiedo venia...
    Hai ragione dopo un'ora ho capito cosa volesse e per questo ho fatto una funzioncina per scusarmi:
    codice:
    $array1 = array(10,20,30,40,50);
    $array2 = array(10,20);
    $i=0;
    array_walk($array1,'somma',$array2);
    function somma(&$elemento, $key, $array2)
    {
        global $i;
        if ($i<count($array2)) $var = $i++;
        else {$i=1; $var=0;}
        $elemento=$elemento+$array2[$var];
    }
    
    //solo 6 righe  :unz: 
    print "<pre>";
    print_r($array1);
    print "</pre>";
    ... e magicamente restituisce:
    codice:
    Array
    (
        [0] => 20
        [1] => 40
        [2] => 40
        [3] => 60
        [4] => 60
    )
    naturalmente se non vuoi modificare array1 e lasciarlo intatto basta farne una copia
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  10. #10
    Comunque il codice di Avalox e' migliore, a parte tutto bastava leggere meglio ed evitare figuracce :maLOL:
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

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.