Avatar billede michael_stim Ekspert
30. september 2005 - 11:11 Der er 19 kommentarer og
1 løsning

Array udfordring

Har et multiarray taget fra en tabel: array[dato][kundenr]=[antal] der skal jeg så have summen af antal pr dato. Kan sagtens få summen af alt, men det skal være pr dato.

i et andet array har jeg så kundenr=>antal og der skal jeg have summen af antal, grupperet via de kundenr der er i det første array???

array1=array(dato=>array(kundenr=>antal kundenr=>antal)dato=>array(kundenr=>antal kundenr=>antal) osv.
array2=array(kundenr=>antal)

sum array1=>dato1 = 10
sum array2=>de_kundenr_der_er_i_dato1=6

sum array1=>dato2 = 9
sum array2=>de_kundenr_der_er_i_dato2=7

osv

Håber i forstår.
Avatar billede jakobdo Ekspert
30. september 2005 - 12:59 #1
Tror du ikke det måske er muligt at lave en SQL som giver dig det ønskede resultat?
Avatar billede hmortensen Nybegynder
30. september 2005 - 13:01 #2
Hvis det ikke er fra en database, kunne det måske parses anderledes, så  det var lettere at arbejde med.
Avatar billede michael_stim Ekspert
30. september 2005 - 13:09 #3
Det er det der er noget gylle. Det er to forskellige forespørgelser, og har ikke mulighed for at gøre det anderledes.
Avatar billede jakobdo Ekspert
30. september 2005 - 13:12 #4
Prøv at vis dine 2 forespørgsler.
Avatar billede michael_stim Ekspert
30. september 2005 - 13:41 #5
$tmpressql="SELECT kundenr, disp_forslag FROM exnetkundekamp WHERE varenr='".$varenr."' AND kampnr='".$kampnr."' AND kundenr IN(SELECT DISTINCT kundenr FROM kundeordrer WHERE varenr='".$varenr."')";

$tmpressql="SELECT TO_CHAR(bestillingsdato,'YYYY-MM-DD') as DATO, kundenr, antal FROM kundeordrer WHERE varenr='".$varenr."' AND kundenr IN(SELECT DISTINCT kundenr FROM exnetkundekamp WHERE varenr='".$varenr."' AND kampnr='".$kampnr."') ORDER BY TO_CHAR(bestillingsdato,'YYYY-MM-DD') ASC";
Avatar billede jakobdo Ekspert
30. september 2005 - 13:52 #6
Og, der knækkede min elastik! :o)
Avatar billede hmortensen Nybegynder
30. september 2005 - 13:55 #7
Kan du ik lave et dump af dine arrays og paste her.
Avatar billede michael_stim Ekspert
30. september 2005 - 13:58 #8
Kundenr disp
Array ( [750620] => 1 [750778] => 2 [750810] => 3 [750828] => 1 [511162] => 4 [511170] => 1 [511188] => 3 [750422] => 2 [750729] => 2 [750836] => 3 [500405] => 2 [511220] => 2 [511246] => 1 [511428] => 4 [610055] => 0 [610063] => 3 [750232] => 3 [750240] => 2 [750299] => 2 [750489] => 1 [750521] => 2 [750539] => 3 [750547] => 2 [750570] => 0 [750687] => 1 [2002178] => 2 [511139] => 2 [511204] => 1 [511329] => 2 [514141] => 3 [750174] => 2 [750281] => 2 [750331] => 3 [750380] => 2 [750588] => 3 [750604] => 2 [750703] => 4 [750752] => 1 [750760] => 2 [750877] => 1 [750893] => 2 [750901] => 2 [750976] => 4 [2002160] => 1 [2004026] => 2 [2020097] => 2 [2312445] => 2 [2596252] => 2 [500140] => 2 [501072] => 2 [750224] => 2 [750356] => 2 [2150852] => 2 [2014157] => 2 [450023] => 3 [450445] => 2 [450494] => 2 [450577] => 2 [450585] => 2 [450601] => 2 [450627] => 2 [450700] => 2 [450734] => 2 [450759] => 3 [450866] => 2 [1056449] => 3 [1340447] => 3 [1460443] => 2 [1460625] => 2 [1460633] => 2 [1460708] => 2 [1460716] => 2 [1460724] => 2 [1460732] => 2 [1460740] => 2 [1460773] => 2 [1460781] => 2 [1460799] => 3 [1460823] => 0 [1460831] => 2 [1460898] => 3 [374785] => 2 [450171] => 3 [450296] => 2 [450338] => 3 [450528] => 1 [450874] => 2 [1139757] => 2 [1460880] => 2 [111047] => 3 [143016] => 2 [327445] => 3 [450304] => 3 [1271246] => 3 [450221] => 2 [450478] => 2 [450767] => 2 [450882] => 2 [450890] => 1 [311548] => 1 [355248] => 3 [375246] => 1 [450387] => 2 [450429] => 1 [450908] => 1 [103648] => 2 [143099] => 2 [235143] => 1 [245746] => 1 [322446] => 2 [450007] => 2 [450031] => 2 [450049] => 1 [450163] => 1 [450213] => 1 [450320] => 3 [450692] => 2 [450791] => 1 [450825] => 2 [450833] => 3 [1273044] => 2 [1415140] => 4 [137158] => 1 [142943] => 2 [151746] => 1 [152645] => 1 [327049] => 2 [355941] => 2 )
sum disp:
259
Kundenr ordrer
Array ( [2005-09-21] => Array ( [750570] => 1 ) [2005-09-23] => Array ( [750521] => 1 [450338] => 2 [2002178] => 1 [750331] => 1 [1460708] => 1 [750547] => 2 [511204] => 1 ) [2005-09-26] => Array ( [511428] => 5 [1460831] => 2 [1460740] => 2 [750620] => 1 [2596252] => 2 [750729] => 1 [450171] => 3 [450445] => 3 [750810] => 2 [1460716] => 2 [1460781] => 1 [151746] => 1 [1460898] => 1 [103648] => 2 [511139] => 2 [750687] => 1 [1460633] => 1 [311548] => 1 [450221] => 1 [450882] => 2 ) [2005-09-27] => Array ( [450163] => 1 [1460732] => 1 [450700] => 1 [511220] => 1 [750380] => 5 [450049] => 1 [1056449] => 3 [235143] => 1 [450296] => 1 [450791] => 1 [322446] => 1 [511246] => 1 [450478] => 1 [375246] => 1 [750752] => 1 [1271246] => 2 [1340447] => 4 [500140] => 1 [750281] => 2 [511170] => 1 [514141] => 3 [511329] => 2 [500405] => 1 [1139757] => 1 [511188] => 2 [750893] => 2 [450866] => 2 [2002160] => 2 [750588] => 2 [1460443] => 3 [1460625] => 1 [450601] => 1 [750604] => 1 [750836] => 4 [450833] => 2 [355248] => 2 [450734] => 1 [750760] => 1 [750901] => 2 [450627] => 1 [374785] => 2 [1273044] => 1 [450874] => 1 [450825] => 2 [750703] => 2 [1460773] => 4 [450890] => 1 [450304] => 2 [750299] => 2 [2150852] => 2 [450429] => 2 [750422] => 1 [450023] => 2 [750877] => 1 [2312445] => 3 [750489] => 2 [750356] => 1 [1415140] => 3 [450007] => 2 [450494] => 2 [450528] => 1 [143099] => 1 [450577] => 2 [610063] => 2 [450585] => 1 [143016] => 1 [750240] => 1 [450908] => 1 [1460823] => 2 [2020097] => 2 [610055] => 4 [511162] => 3 [450320] => 2 [2014157] => 1 ) [2005-09-28] => Array ( [450759] => 1 [750778] => 1 [450213] => 1 [245746] => 2 [750828] => 1 [450387] => 2 [750976] => 4 [152645] => 1 [142943] => 1 [137158] => 1 [1460799] => 3 [111047] => 5 [501072] => 2 [1460880] => 1 [355941] => 2 [2004026] => 1 [450031] => 2 [1460724] => 3 [750174] => 2 [450692] => 1 [327049] => 2 [750539] => 2 [327445] => 1 [450767] => 1 [750224] => 1 [750232] => 2 ) )
sum ko:
221
sammeligning:
Array ( )
Avatar billede hmortensen Nybegynder
30. september 2005 - 14:01 #9
Kan du ik lige smide et <pre> tag på ? ;)
Det der er jo ganske ulæseligt.
Avatar billede michael_stim Ekspert
30. september 2005 - 14:05 #10
Kundenr disp

Array
(
    [750620] => 1
    [750778] => 2
    [750810] => 3
    [750828] => 1
    [511162] => 4
    [511170] => 1
    [511188] => 3
    [750422] => 2
    [750729] => 2
    [750836] => 3
    [500405] => 2
    [511220] => 2
    [511246] => 1
    [511428] => 4
    [610055] => 0
    [610063] => 3
    [750232] => 3
    [750240] => 2
    [750299] => 2
    [750489] => 1
    [750521] => 2
    [750539] => 3
    [750547] => 2
    [750570] => 0
    [750687] => 1
    [2002178] => 2
    [511139] => 2
    [511204] => 1
    [511329] => 2
    [514141] => 3
    [750174] => 2
    [750281] => 2
    [750331] => 3
    [750380] => 2
    [750588] => 3
    [750604] => 2
    [750703] => 4
    [750752] => 1
    [750760] => 2
    [750877] => 1
    [750893] => 2
    [750901] => 2
    [750976] => 4
    [2002160] => 1
    [2004026] => 2
    [2020097] => 2
    [2312445] => 2
    [2596252] => 2
    [500140] => 2
    [501072] => 2
    [750224] => 2
    [750356] => 2
    [2150852] => 2
    [2014157] => 2
    [450023] => 3
    [450445] => 2
    [450494] => 2
    [450577] => 2
    [450585] => 2
    [450601] => 2
    [450627] => 2
    [450700] => 2
    [450734] => 2
    [450759] => 3
    [450866] => 2
    [1056449] => 3
    [1340447] => 3
    [1460443] => 2
    [1460625] => 2
    [1460633] => 2
    [1460708] => 2
    [1460716] => 2
    [1460724] => 2
    [1460732] => 2
    [1460740] => 2
    [1460773] => 2
    [1460781] => 2
    [1460799] => 3
    [1460823] => 0
    [1460831] => 2
    [1460898] => 3
    [374785] => 2
    [450171] => 3
    [450296] => 2
    [450338] => 3
    [450528] => 1
    [450874] => 2
    [1139757] => 2
    [1460880] => 2
    [111047] => 3
    [143016] => 2
    [327445] => 3
    [450304] => 3
    [1271246] => 3
    [450221] => 2
    [450478] => 2
    [450767] => 2
    [450882] => 2
    [450890] => 1
    [311548] => 1
    [355248] => 3
    [375246] => 1
    [450387] => 2
    [450429] => 1
    [450908] => 1
    [103648] => 2
    [143099] => 2
    [235143] => 1
    [245746] => 1
    [322446] => 2
    [450007] => 2
    [450031] => 2
    [450049] => 1
    [450163] => 1
    [450213] => 1
    [450320] => 3
    [450692] => 2
    [450791] => 1
    [450825] => 2
    [450833] => 3
    [1273044] => 2
    [1415140] => 4
    [137158] => 1
    [142943] => 2
    [151746] => 1
    [152645] => 1
    [327049] => 2
    [355941] => 2
)


sum disp:
259
Kundenr ordrer

Array
(
    [2005-09-21] => Array
        (
            [750570] => 1
        )

    [2005-09-23] => Array
        (
            [750521] => 1
            [450338] => 2
            [2002178] => 1
            [750331] => 1
            [1460708] => 1
            [750547] => 2
            [511204] => 1
        )

    [2005-09-26] => Array
        (
            [511428] => 5
            [1460831] => 2
            [1460740] => 2
            [750620] => 1
            [2596252] => 2
            [750729] => 1
            [450171] => 3
            [450445] => 3
            [750810] => 2
            [1460716] => 2
            [1460781] => 1
            [151746] => 1
            [1460898] => 1
            [103648] => 2
            [511139] => 2
            [750687] => 1
            [1460633] => 1
            [311548] => 1
            [450221] => 1
            [450882] => 2
        )

    [2005-09-27] => Array
        (
            [450163] => 1
            [1460732] => 1
            [450700] => 1
            [511220] => 1
            [750380] => 5
            [450049] => 1
            [1056449] => 3
            [235143] => 1
            [450296] => 1
            [450791] => 1
            [322446] => 1
            [511246] => 1
            [450478] => 1
            [375246] => 1
            [750752] => 1
            [1271246] => 2
            [1340447] => 4
            [500140] => 1
            [750281] => 2
            [511170] => 1
            [514141] => 3
            [511329] => 2
            [500405] => 1
            [1139757] => 1
            [511188] => 2
            [750893] => 2
            [450866] => 2
            [2002160] => 2
            [750588] => 2
            [1460443] => 3
            [1460625] => 1
            [450601] => 1
            [750604] => 1
            [750836] => 4
            [450833] => 2
            [355248] => 2
            [450734] => 1
            [750760] => 1
            [750901] => 2
            [450627] => 1
            [374785] => 2
            [1273044] => 1
            [450874] => 1
            [450825] => 2
            [750703] => 2
            [1460773] => 4
            [450890] => 1
            [450304] => 2
            [750299] => 2
            [2150852] => 2
            [450429] => 2
            [750422] => 1
            [450023] => 2
            [750877] => 1
            [2312445] => 3
            [750489] => 2
            [750356] => 1
            [1415140] => 3
            [450007] => 2
            [450494] => 2
            [450528] => 1
            [143099] => 1
            [450577] => 2
            [610063] => 2
            [450585] => 1
            [143016] => 1
            [750240] => 1
            [450908] => 1
            [1460823] => 2
            [2020097] => 2
            [610055] => 4
            [511162] => 3
            [450320] => 2
            [2014157] => 1
        )

    [2005-09-28] => Array
        (
            [450759] => 1
            [750778] => 1
            [450213] => 1
            [245746] => 2
            [750828] => 1
            [450387] => 2
            [750976] => 4
            [152645] => 1
            [142943] => 1
            [137158] => 1
            [1460799] => 3
            [111047] => 5
            [501072] => 2
            [1460880] => 1
            [355941] => 2
            [2004026] => 1
            [450031] => 2
            [1460724] => 3
            [750174] => 2
            [450692] => 1
            [327049] => 2
            [750539] => 2
            [327445] => 1
            [450767] => 1
            [750224] => 1
            [750232] => 2
        )

)


sum ko:
221
sammeligning:
Array ( )
Avatar billede hmortensen Nybegynder
30. september 2005 - 15:30 #11
Forstår ikke helt hvad du vil så.

Hvad vil du med det første array ?
Avatar billede michael_stim Ekspert
30. september 2005 - 15:46 #12
Som du kan se, er det samme nøgle (kundenr) i begge arrays. Det jeg vil have gjort er at summere værdierne i multiarrayet og gruppere dem på datonøglen.
[2005-09-21]=1
[2005-09-23]=9
[2005-09-26]=36
[2005-09-27]=131
[2005-09-28]=45

Og så skal det endimesionelle array ligeledes grupperes. Men der har jeg ikke nogen datonøgle at gå efter. Så jeg er tvunget til at tage de kundenumre der er i multiarrayet og gruppere efter dem.

Gruppe [2005-09-21]
[kundenr(750570)]=0

Gruppe [2005-09-23]
[kundenr(750521),(450338),(2002178),(750331),(1460708),(750547),(511204)]=7

osv
Avatar billede coderdk Praktikant
01. oktober 2005 - 00:37 #13
Jeg forstår ikke hvad det endimensionelle array skal gøre godt for? Er de samme informationer ikke i det multidimensionelle (også)?

For hvis vi antager at dit multidimensionelle array hedder $knrdates så burde du kunne opnå begge dele med:

    foreach( $knrdates as $date => $info )
    {
        echo "[" . $date . "]=" . array_sum( $info ) . "<br>";
    }

    echo "<br><br>2. del<br><br>";
    foreach( $knrdates as $date => $info )
    {
        $tmparr = array_unique( array_keys( $info ) );
        $kntmp = implode( ',', $tmparr );
        echo "Gruppe [" . $date . "]<br>&nbsp;[" . $kntmp . "]=" . count( $tmparr ) . "<br>";
    }
Avatar billede michael_stim Ekspert
02. oktober 2005 - 22:01 #14
Nej, nöglen er den samme. Värdien er ikke den samme.
Avatar billede michael_stim Ekspert
03. oktober 2005 - 10:19 #15
Det er i og for sig OK, det du har lavet coderdk. Så skal den endimensionelle array bare summeres og grupperes via de nøgler der er taget frem i "del 2".
Avatar billede coderdk Praktikant
03. oktober 2005 - 11:09 #16
Ok, men jeg er ikke helt med på hvordan du vil gruppere dem i det flade array, vha dem i det multidimensionelle...
Avatar billede michael_stim Ekspert
03. oktober 2005 - 11:27 #17
De nøgler (eller værdier i din $tmparr) skal summeres i den endimensionelle.
Jeg er lige ved at have den.
Avatar billede michael_stim Ekspert
03. oktober 2005 - 11:44 #18
foreach( $arr as $date => $info )
    {
        echo "[" . $date . "]=" . array_sum( $info ) . "<br>";
    }

    echo "<br><br>2. del<br><br>";
    foreach( $arr as $date => $info )
    {
        $tmparr = array_unique( array_keys( $info ) );
        $kntmp = implode( ',', $tmparr );
        echo "Gruppe [" . $date . "]<br>&nbsp;[" . $kntmp . "]=" . count( $tmparr ) . "<br>";
        //print_r($tmparr);
        print_r(key_values_intersect($arr2,$tmparr));
        echo"<br>SUM:";
        echo array_sum(key_values_intersect($arr2,$tmparr));
        echo"<br>";
    }

    function key_values_intersect($vardi,$nogle) {
      foreach($nogle AS $key) {
        $key_val_int[$key] = $vardi[$key];
        }
      return $key_val_int;
  }

Der sad den.

Læg et svar coderdk.
Avatar billede coderdk Praktikant
03. oktober 2005 - 12:39 #19
hehe ok :D
Avatar billede michael_stim Ekspert
05. oktober 2005 - 11:15 #20
Ups glemte dig ;o)
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