Avatar billede mrfunder Nybegynder
02. maj 2010 - 18:01 Der er 7 kommentarer

Sammenlæg array værdier

Hej Eksperter,

Jeg har et array der bliver skabt af et database udtræk. Hvordan sammenlægger jeg mine værdier, såfremt der er flere med samme id?

Array
(
    [0] => Array
        (
            [id] => 3
            [time_spent] => 2959
        )

    [1] => Array
        (
            [id] => 2
            [time_spent] => 6
        )

    [2] => Array
        (
            [id] => 1
            [time_spent] => 439
        )

    [3] => Array
        (
            [id] => 4
            [time_spent] => 67
        )

    [4] => Array
        (
            [id] => 3
            [time_spent] => 2110
        )

    [5] => Array
        (
            [id] => 3
            [time_spent] => 511
        )

)

Skal altså se sådan ud efter sammenlægning:


Array
(
    [0] => Array
        (
            [id] => 3
            [time_spent] => 5580
        )

    [1] => Array
        (
            [id] => 2
            [time_spent] => 6
        )

    [2] => Array
        (
            [id] => 1
            [time_spent] => 439
        )

    [3] => Array
        (
            [id] => 4
            [time_spent] => 67
        )

)


Jeg håber der er nogen der kan hjælpe mig i den rigtige retning..

På forhånd tak :)
Avatar billede repox Seniormester
02. maj 2010 - 18:50 #1
Jeg ville nok gøre array dimensionen et niveau mindre:
<?php

  $timeTable = array();

  foreach( $arrayOne as $one )
  {
    if( !isset($timeTable[$one["id"]]) )
      $timeTable[$one["id"]] = 0;

    $timeTable[$one["id"]] += $one["time_spent"];
  }

  print_r($timeTable);

?>


Resultet er et indekseret array hvor indekset er "id" og værdien er den samlede "time_spent".
Avatar billede ksoren Nybegynder
02. maj 2010 - 19:11 #2
Er det med vilje, at du ikke gør det direkte i din sql?
Avatar billede showsource Seniormester
02. maj 2010 - 19:58 #3
I stil med:

$sql = "SELECT id, SUM(time_spent) as ialt GROUP BY id ASC";
$sqlrows = mysql_query($sql) or die (mysql_error());
Avatar billede showsource Seniormester
02. maj 2010 - 19:59 #4
Hov!
$sql = "SELECT id, SUM(time_spent) as ialt GROUP BY id ORDER BY id ASC";
Avatar billede showsource Seniormester
02. maj 2010 - 20:02 #5
Hvis du vil lave et array for at genbruge hvad der er i din db, skal du hellere bruge mysql_result(), nu den er der.
Avatar billede mrfunder Nybegynder
03. maj 2010 - 01:56 #6
Mange tak til jer alle.


@showsource: det er desværre ikke muligt eftersom det ikke blot er en værdi, men time_spent udregnes af to tidsintervaller i en række af grupperinger.

@rep0x: smid et svar :- )
Avatar billede repox Seniormester
03. maj 2010 - 08:46 #7
Der kom et svar her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester