somma elementi, finché elementi di altro array sono uguali

loreberti10

Utente Attivo
22 Set 2012
43
0
0
Buonasera a tutti, volevo chiedere se mi potreste aiutare con un problema che sto riscontrando da oggi e mi sta facendo impazzire.

Io ho da fare una (apparente) semplice operazione:
Ho 2 array, tutti e due contenenti interi.
Ora nel primo array ho numeri casuali, mentre nel secondo ho numeri in sequenza che si ripetono..
Mi spiego meglio: ad esempio:
Array1 ( 20 , 15, 16, 18, 19 , 7)
Array2 (1, 1, 1, 2, 3, 3)

Quello che io vorrei fare è : Sommare gli elementi dell'array1 finchè ho elementi uguali nell'array2.
Per essere ancora più chiari, nel caso sopra citato dovrei avere come risultato:

(20+15+16) , 18, (19+7)

ho provato a fare le cose che mi venivano in mente ad esempio mettere controlli come if(array2[$x] == array2[$x+1]) ma non riesco a trovare una soluzione...

Grazie in anticipo
 
Ciao,
a me è venuta in mente questa soluzione
fai due cicli :
con il primo raggruppi e conti gli elementi del secondo array
con il secondo fai le somme in base al risultato del primo

PHP:
$numeri_uno = array(20, 15, 16, 18, 19, 7);
$numeri_due = array(1, 1, 1, 2, 3, 3);

$somme = array();
foreach ($numeri_due as $value) {
    $c = array_count_values($numeri_due);
    $somme[array_search($value, $numeri_due)] = $c[$value];
}
var_dump($somme);

$y = 0;
$risultato = array();
foreach ($somme as $key => $value) {
    $risultato[$key] = 0;
    for ($i = 0; $i < $value; $i++, $y++) {
        $risultato[$key] += $numeri_uno[$y];
    }
}
var_dump($risultato);

non ho commentato, vedi se è applicabile al tuo caso
probabilmente c'è un altra soluzione con delle funzioni php che non conosco o cmq adesso non mivegono in mente
 
Ciao,
a me è venuta in mente questa soluzione
fai due cicli :
con il primo raggruppi e conti gli elementi del secondo array
con il secondo fai le somme in base al risultato del primo

PHP:
$numeri_uno = array(20, 15, 16, 18, 19, 7);
$numeri_due = array(1, 1, 1, 2, 3, 3);

$somme = array();
foreach ($numeri_due as $value) {
    $c = array_count_values($numeri_due);
    $somme[array_search($value, $numeri_due)] = $c[$value];
}
var_dump($somme);

$y = 0;
$risultato = array();
foreach ($somme as $key => $value) {
    $risultato[$key] = 0;
    for ($i = 0; $i < $value; $i++, $y++) {
        $risultato[$key] += $numeri_uno[$y];
    }
}
var_dump($risultato);

non ho commentato, vedi se è applicabile al tuo caso
probabilmente c'è un altra soluzione con delle funzioni php che non conosco o cmq adesso non mivegono in mente

Grazie mille!!!
Mi era venuta in mente anche quella opzione ma non ero riuscito a metterla in atto.
Con i primi test sembra proprio funzionare!
Grazie mille! :)
 

Discussioni simili