Avatar billede Morten Nybegynder
09. november 2004 - 12:57 Der er 11 kommentarer og
1 løsning

array - hjælp

Jeg har to arrays som jeg skal have lagt sammen til et . ikke noget problem... ($C=$a+$b)

Problemet er et mit ene array ikke ser ud som det skal/bør.
Jeg laver arrayet på flg. måde:

            foreach ($mailtogroup as $mailuser)
                {
                    $query = ("SELECT [id] FROM telefonliste WHERE [".$mailuser."]= \"Ja\" ");                   
                    $result = mssql_query($query);
                    $array = array();
                        while($rows = mssql_fetch_array($result))
                            {
                                  array_push($array,$rows);
                            }
                }

og det giver følgende array:
Array
(
    [0] => Array
        (
            [0] => 3
            [id] => 3
        )

    [1] => Array
        (
            [0] => 11
            [id] => 11
        )

    [2] => Array
        (
            [0] => 14
            [id] => 14
        )

    [3] => Array
        (
            [0] => 16
            [id] => 16
        )

    [4] => Array
        (
            [0] => 18
            [id] => 18
        )

    [5] => Array
        (
            [0] => 77
            [id] => 77
        )

    [6] => Array
        (
            [0] => 86
            [id] => 86
        )

)
.. hvorfor laver den to entries i arrayet - der er nok noget jeg alligevel ikke helt har fattet mht. arrays

men jeg vil have at det skal se ud som følgende:

Array
(
    [0] => 31
    [1] => 86
)

Hvad gør jeg galt???
Avatar billede Morten Nybegynder
09. november 2004 - 13:08 #1
... sidebemærkning...
Fandt lige ud af at $C=$a+$b ikke virker helt (denoverskrive på samme pladser) så bruger istedet array_merge.. men har stadig ovenstående prob.
Avatar billede soccerdad Nybegynder
09. november 2004 - 13:28 #2
Når du henter med "*_fetch_array" får du to referencer til hvert felt: nummerisk (startende med 0) og feltnavn. Så du skal nok eksplicit angive feltnavnet eller referencen.
Avatar billede Morten Nybegynder
09. november 2004 - 13:29 #3
er lige ved at finde ud af om det overhovedet betyder noget at det ser ud som det gør..

Kan du forklare hvordan jeg eksplicit angiver reference eller feltnavn?
Avatar billede soccerdad Nybegynder
09. november 2004 - 13:35 #4
fx. $rows[0] eller $rows['id'], hvor 'id' er dit SQL feltnavn. Det kunne være at du i din SQL havde defineret "GET A+B AS 'C' ...", så ville du kunne hente $rows['C'].
Avatar billede Morten Nybegynder
09. november 2004 - 14:23 #5
Okay det funger - men kan du ikke lige hjælpe mig lidt mere...

Hvorfor henter denne kun den sidste i nr. 2 forespørgelse???

    require($_SERVER["DOCUMENT_ROOT"]."/function/connect_db.php");
   
    foreach ($mailtogroup as $mailuser)
        {
            $query = ("SELECT [id], [fornavn] FROM telefonliste WHERE [".$mailuser."]= \"Ja\" ");                   
            $result = mssql_query($query);
            $array = array();
                while($rows = mssql_fetch_array($result))
                    {
                          array_push($array,$rows[0]);
                    }
        }
   
        $mailarray=array_merge($array,$mailto);   


        echo"<pre>";
        print_r ($mailarray);
        echo"</pre>";
       
    foreach ($mailarray as $mailuser2)
        {
            $query2 = ("SELECT [firma_email] FROM telefonliste WHERE [id] = ".$mailuser2."");                   
            $result2 = mssql_query($query2);
            $array2 = array();
                while($rows2 = mssql_fetch_array($result2))
                    {
                          array_push($array2,$rows2[0]);
                    }
        }
        echo"<pre>";
        print_r ($array2);
        echo"</pre>";

Giver følgende to output:

Array
(
    [0] => 3
    [1] => 101
)

Array
(
    [0] => user@mail.dk
)

Og jeg ved der også er en mail adresse på id nr. 3

Nogen ide om hvad jeg gør galt???????????????
Avatar billede soccerdad Nybegynder
09. november 2004 - 15:06 #6
Du nulstiller $array2 i hvert gennemløb af foreach($mailarray as $mailuser2). Du kan prøve at flytte $array2 = array(); op foran løkken.

Du gør vist det samme i den øverste løkke, men hvis der kun er et medlem af $mailtouser, ses det ikke.
Avatar billede Morten Nybegynder
09. november 2004 - 15:16 #7
Du er da hardcore... ;O) (eller også er det mig som er mindrebeg....:O=)

Må jeg spørge om 1 ting mere...

Kan man gennemløbe $array2 og fjerne dubletter?
Avatar billede soccerdad Nybegynder
09. november 2004 - 15:19 #8
Tja, det kan man nok godt, men er det ikke lettere at fjerne dem via SQL-kaldet?

$query2 = ("SELECT DISTINCT [firma_email] FROM telefonliste WHERE [id] = ".$mailuser2."");
Avatar billede Morten Nybegynder
09. november 2004 - 15:22 #9
Tjoe - hvis bare man vidste lidt mere om det hele - men det kommer vel en dag...

Vil du ikke være rar at smide et svar...
Avatar billede Morten Nybegynder
09. november 2004 - 15:31 #10
Hmmm.. men det virker ikke med SELECT DISTINCT
Avatar billede Morten Nybegynder
09. november 2004 - 23:56 #11
Nå men jeg klarede den med dubletterne med array_unique

så nu mangler jeg bare lige dit svar
Avatar billede soccerdad Nybegynder
10. november 2004 - 08:08 #12
Jeg skulle lige på arbejde... ;-)
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