Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371

    Raggruppare/Sommare Array

    Salve raga ho questo quesito:
    ho un array tipo questo
    [
    {"nome":"mario","age":"33","importo":"726,98"},
    {"nome":"mario","age":"35","importo":"26,00"},
    {"nome":"mario","age":"40","importo":"43,02"},
    {"nome":"mario","age":"41","importo":"726,98"},
    {"nome":"carlo","age":"33","importo":"526,25"},
    {"nome":"carlo","age":"41","importo":"6,15"}
    {"nome":"carlo","age":"48","importo":"15,35"}
    ]
    dovrei sommare il campo importo di quelli che hanno lo stesso nome ed hanno un'eta maggiore di 40....
    gradirei ottenere questo...
    [
    {"nome":"mario","age":"33","importo":"726,98"},
    {"nome":"mario","age":"35","importo":"26,00"},
    {"nome":"mario","age":"","importo":"770,00"},//qui somma 43,02+726,08
    {"nome":"carlo","age":"33","importo":"526,25"},
    {"nome":"carlo","age":"","importo":"21,50"}//qui somma 6,15+15,35
    ]

    grazie in anticipo

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Prima di tutto una domanda: da dove provengono questi dati?
    Se li prendi da un DB ti conviene far fare la somma direttamente a SQL, in tal caso se hai bisogno di aiuto sulla query chiedi nella sezione Database.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Grazie per la risposta .....i dati provengono da una importazione di file XLS mi restituisce questo file che devo buttare nel db ma devo prima fare le somme sopra descritte....

    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Prima di tutto una domanda: da dove provengono questi dati?
    Se li prendi da un DB ti conviene far fare la somma direttamente a SQL, in tal caso se hai bisogno di aiuto sulla query chiedi nella sezione Database.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Dovresti farti un nuovo array.
    Scorri elemento per elemento l'array che hai già e ogni volta controlli nel nuovo se devi aggiungere una nuova entry oppure se sommare ad una che hai già inserito.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Mi date una mano per favore ???


    $data = '[
    {"nome":"mario","age":"33","importo":"726,98"},
    {"nome":"mario","age":"35","importo":"26,00"},
    {"nome":"mario","age":"40","importo":"43,02"},
    {"nome":"mario","age":"41","importo":"726,98"},
    {"nome":"carlo","age":"33","importo":"526,25"},
    {"nome":"carlo","age":"41","importo":"6,15"},
    {"nome":"carlo","age":"48","importo":"15,35"}
    ]';



    $data = json_decode($data);
    $data = array_filter($data);
    $result = array();
    foreach($data as $value) {
    if (array_key_exists($value->nome,$result))
    {
    //controllo se esiste
    echo "Key exists!";
    if ($value->age >= 40)
    {
    //qui devo sommare importi al record già nell'array
    echo "Sommare Importo ".$value->importo."<br>";
    }
    else
    {
    echo "Eta inferiore aggiungo record nome =".$value->nome."/ age=".$value->age."/ importo=".$value->importo."<br>";
    $result[] = array(
    'nome' => $value->nome,
    'age' => $value->age,
    'importo' => $value->importo
    );
    }
    }
    else
    //se non esiste lo aggiungo
    {
    echo "Non esiste aggiungo record nome =".$value->nome."/ age=".$value->age."/ importo=".$value->importo."<br>";
    $result[] = array(
    'nome' => $value->nome,
    'age' => $value->age,
    'importo' => $value->importo
    );
    }
    }
    print_r($result);
    Ultima modifica di max1974; 11-04-2019 a 11:54

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