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

    Sommare valori array by key

    Ho un array così formato

    Codice PHP:
    Array
    (
        [
    0] => Array
            (
                [
    name] => Prova
                
    [price] => 10
                
    [typology] => BOOKING
                
    [required] => 1
            
    )

        [
    1] => Array
            (
                [
    name] => Prova
                
    [price] => 10
                
    [typology] => BOOKING
                
    [required] => 1
            
    )

        [
    2] => Array
            (
                [
    name] => Prova
                
    [price] => 10
                
    [typology] => BOOKING
                
    [required] => 1
            
    )

        [
    3] => Array
            (
                [
    name] => Non è una prova
                
    [price] => 10
                
    [typology] => BOOKING
                
    [required] => 2
            
    )

        [
    4] => Array
            (
                [
    name] => Prova
                
    [price] => 10
                
    [typology] => BOOKING
                
    [required] => 1
            
    )



    e devo sommare tutti i valori 'price' degli array che hanno gli altri valori uguali.

  2. #2

  3. #3
    Devo raggruppare gli array che hanno lo stesso "name" in un unico array con i prezzi sommati.

  4. #4
    Codice PHP:
    $reductions[$roomInfo['id']][$treatmentInfo['treatment_type']][] =
    array(
    "treatment_type" =>$treatmentInfo['treatment_type'],
    "room_id" => $roomInfo['id'],
    "name" => $reductionInfo['ReductionsType']['name'],
    "price" => $this->PriceReduction($reductionInfo$base_price),
    "typology" => $reductionInfo['ReductionsType']['typology'],
    "required" => $reductionInfo['ReductionsType']['required']); 
    Questo è l'array. In pratica devo fare che ogni volta che eseguo questo codice l'indice "price" deve sommarsi con il precedente array che ha gli altri valori uguali.

    Invece di un => avrei bisogno di un +=>

  5. #5

  6. #6
    Nessuno sà come potrei fare?
    E' veramente urgente e non riesco ad uscirne

  7. #7
    Fatto proprio alla carlona e senza averlo controllato:

    Codice PHP:

        $array_in 
    = array('...'); //quello che hai postato te su cui effettuare la somma
        
    $array_out = array(); //array che conterrà nomi e somme: Nome => somma
     
    foreach($array_in as $item):

    if(
    array_key_exists($item['name'],$array_out)){
    //nome già esistente, aggiungo
    $array_out[$item['name']] += $item['price'];
    }else{
    //prima volte che incontro name
    $array_out[$item['name']] = $item['price'];
    }
    endforeach;

    print_r($array_out); 
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    1. E se volessi verificare l'uguaglianza tra più key (name, description, key 3,...)
    2. Invece di creare un nuovo array del formato
    $totali['name'], non posso mantenere lo stesso ordine ovvero invece di usare come indice dell'array name, un indice.

    In pratica lo stesso array di prima però in cui i valori duplicati (in base all'uguaglianza di più key) vengono rimossi e il price viene sommato tra loro

  9. #9
    Originariamente inviato da leonapster
    1. E se volessi verificare l'uguaglianza tra più key (name, description, key 3,...)
    2. Invece di creare un nuovo array del formato
    $totali['name'], non posso mantenere lo stesso ordine ovvero invece di usare come indice dell'array name, un indice.

    In pratica lo stesso array di prima però in cui i valori duplicati (in base all'uguaglianza di più key) vengono rimossi e il price viene sommato tra loro
    non c'ho capito una mazza e in piu non ne capisco la logica... ma come fai a sommare due cose se sono uguali ma a tenerle su due key diverse? da come dici te, vedendo l'array che hai postato, pare che tu voglia che in tutti i record di nome Prova ci sia come price la somma di tutti i record di pari nome... ma non te ne basta uno solo? cioè anche quando fai le query se fai somme e group by perdi la distinta dei record e trovi solo un totale...

    E se tu volessi verificare l'uguaglianza tra piu key, beh la devi implementare... sul come salvarti i risultati non saprei, dipende da molte cose... ad esempio potresti fare un array multi dimensionale...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.