[PHP] Multidim array optellen bij zelfde keyvalue

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
edit:
[ php ] in titel vergeten

Ik heb een array:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Array
(
    [0] => Array
        (
            [id] => 27
            [tijd] => 1.500000000000
            [datum] => 20040106
        )

    [1] => Array
        (
            [id] => 27
            [tijd] => 0.333333333333
            [datum] => 20040106
        )

    [2] => Array
        (
            [id] => 27
            [tijd] => 0.250000000000
            [datum] => 20040105
        )
)


Wat ik wil:
Als [id] en [datum] het zelfde zijn dan wil ik [tijd] optellen.
Array[0] en array[1] Moeten worden samen gevoegd.
Dus
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array
(
    [0] => Array
        (
            [id] => 27
            [tijd] => 1.8333333333333
            [datum] => 20040106
        )

     [1] => Array
        (
            [id] => 27
            [tijd] => 0.250000000000
            [datum] => 20040105
        )
)

array[0] en array[1] Zijnsamen gevoegd en [tijd] is opgeteld. [datum] en [id] zijn het zelfde.


Een beetje lastig probleem voor mij waar ik 123 geen oplossing voor heb. Op php.net heb ik niet echt iets zien staan waarmee dit zou kunnen en hier kan ik niet vinden.

Ook heb ik verschillende pogingen gedaan om dit voor elkaar te krijgen maar het spreekt vanzelf dat ik nog geen succes heb gehad.

[ Voor 16% gewijzigd door Suepahfly op 14-01-2004 11:15 ]


Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Heb je nog specefieke eisen over geheugengebruik? Want anders kun je gewoon de array aflopen, het id toevoegen in een hashmap samen met de tijd en telkens als een id al bestaan in de hashmap toevoegen of anders initialiseren met de tijd.
Komt dit uit een SQL-query oid, want anders is het al in de query zelf te doen denk ik.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Als je het uit de database haalt zou je gewoon group by date kunnen gebruiken en dan SUM() gebruiken om de waarden op te tellen.

@glimi: wat bedoel je precies met een hashmap? bedoel je daar dit mee:
In php an array with a string as the index is an associative array. In Java, this is called a HashMap or HashTable

Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Een map is niets meer dan een 'mapping' van een key naar een value. Dus, ja een associative array valt daar ook onder. Een hashmap is de meestvoorkomende implementatie, waarin een hashfunctie de keys mapt naar buckets om daar vervolgens de value in te stoppen. De hash is dan eigenlijk puur alleen maar om de keyspace te verkleinen. De verwachte get/set tijd is dan O(1)